Esportazione da programm in c# a file excel

mercoledì 13 maggio 2009 - 23.48

STARS Profilo | Newbie

Salve a tutti gente, avrei un problema. In pratica non riesco a capire perchè non si riesce a copiare un determinata porzione di testo di una certa dimensione, cioè se da prog. tento di scrivere su file excel (ad es. come faccio dal mio programma copiare una trama di un film abb. lunga), mi da un'eccezione, impossibile incollare il testo oppure accorciare i dati; questo è molto strano perchè se faccio una copia manuale della trama, ovviamente me la copia, perchè allora da codice mi lancia questa eccezione? qualche soluzione?
Inoltre, ho provato a spezzare in tanti pezzi utilizzando delle substring() da mettere su più colonne, in modo da evitare l'eccezione descritta prima, ma ho qualche problema nel dividere in tante parti la trama (problemi di diviosne corretta del testo, parole che si ripeto tra una substring() e l'altra), qualche soluzione anche per questo problema?
Grazie per la vostra attenzione.

Ciaooo

freeteo Profilo | Guru

Ciao,
come esporti in Excel i tuoi dati? Io usando il csv (Comma Separated Value) non ho avuto problemi, chiaramente dipende dalla tua esigenza di esportare o meno anche le parti grafiche o le formattazioni.

Se vuoi provare un csv lo puoi generare:
StringBuilder sb = new StringBuilder(); //--- colonne foreach (DataColumn column in table.Columns) sb.Append(column.ColumnName + ";"); //--- righe sb.Append(Environment.NewLine); foreach (DataRow row in table.Rows) { for (int i = 0; i < table.Columns.Count; i++) sb.Append(row[i].ToString().Replace(";", string.Empty) + ";"); sb.Append(Environment.NewLine); } return sb.ToString();


Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo

STARS Profilo | Newbie

thk per il tuo aiuto. Questo è il codice (di base) per inserire i dati nel file excel.... non farci caso a eventuali errori di sintassi!

conn2 = new OleDbConnection();
conn2.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + FilePath + ";Extended Properties=\"Excel 12.0 Xml;HDR=YES\"";
conn2.Open();
cmd2 = new OleDbCommand();
cmd2.Connection = conn2;

int cont=0;
string query = "SELECT Trama FROM prova";
cmd = new SqlCommand(query, conn);
adapter = new SqlDataAdapter(cmd);
adapter.Fill(ds, "prova");

string trama = "";
while (ds.Tables[0].Rows.Count > cont)
{
trama=ds.Tables[0].Rows[cont]["Trama"].ToString();
cmd2.CommandText = "INSERT INTO [Foglio1$] (Trama) VALUES ('" + eliminApice(trama) + "')";
MessageBox.Show(cmd2.CommandText);
cmd2.ExecuteNonQuery();
cont++;
}
cmd2.Dispose();
cmd2 = null;
conn2.Dispose();
conn2 = null;

freeteo Profilo | Guru

Ok, allora tu usi una connessione OleDb per accedere, hai provato ad usare i parametri invece di concatenare la stringa di inserimento?

Per fare le query con i parametri:
http://msdn.microsoft.com/it-it/library/system.data.oledb.oledbparameter.aspx

Ciao.

Matteo Raumer
[MVP Visual C#]
http://blogs.dotnethell.it/freeteo

STARS Profilo | Newbie

funziona tutto, il problema è che se cerco di inserire la trama di un film troppo lunga mi da lancia un eccezione, dicendo di troncare il testo, ecc.....
per il resto il codice funziona perfettamente....
Comunque provo a usare il tuo di codice, poi magari ti faccio sapere come è andata.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5