Export data datagrid o dataset to file .csv o .txt

mercoledì 11 novembre 2009 - 16.38

Rik142 Profilo | Junior Member

Ciao a tutti!!

Vi scrivo perchè ho il seguente problema. Devo esportare i dati da una datagridview o un dataset ad un file .csv o .txt.

Riesco ad estrarre i dati dal db, a passarli alla datagrid ed anche al file sia che sia txt sia che sia csv.

Il problema è che nel mio file non ci finiscono tutti i dati. In particolar modo vengono tralasciate un tot di righe di dati che sono presenti nella mia datagrid/dataset e l'ultimo che inserisce lo tronca a metà (ad esempio: ipotizzando che i dati presenti siano degli indirizzi mail tronca il dato a zzzzrrrrhhhh@lib ).

Per quanto riguarda il ciclo do while....loop ho già utilizzato anche il ciclo for....next che però presentava lo stesso problema.
Altra indicazione: il numero di record che estraggo dal db sono all'incirca 236000.

Il codice che fa tutto ciò è questo:

codice:

Try
db_connessione.Open()
dataadapter.Fill(ds)
dgrMail.DataSource = ds
db_connessione.Close()

Dim count_rows As Integer = 0

count_rows = ds.Rows.Count
Do While i <> count_rows - 1
sw1.WriteLine(ds.Rows(i).Item(0) & ";")
i = i + 1
Loop

Catch ex As OdbcException
MessageBox.Show(ex.Message, "Attenzione", MessageBoxButtons.OK)
End Try


Grazie a chi sa darmi una mano!!

Ciao

alexmed Profilo | Guru

Ciao
Se ho capito bene a te serve esportare il contenuto di una colonna specifica.
Ho fatto una piccola prova e funziona

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Leggo i valori direttamente dalla DGV
Ciao

alexmed

Teech Profilo | Expert

2 piccoli accorgimenti per Rik se posso permettermi.

Innanzitutto sai quante sono le iterazioni che devi fare sul ciclo e quindi ti consiglio un For Next
For i = 0 To ds.Rows.Count-1 sw1.WriteLine(ds.Rows(i).Item(0) & ";") Next

In secondo luogo devi asportare delle stringhe e metterle in un writer e quindi converti i tuoi valori esplicitamente in stringa (così puoi anche formattarli). Questo, forse, potrebbe già aiutarti nel tuo problema.
For i = 0 To ds.Rows.Count sw1.WriteLine(ds.Rows(i).Item(0).ToString() & ";") Next

Per il problema che hai segnalato prova a impostare la proprietà Autoflush dello StreamWriter a True...
http://msdn.microsoft.com/it-it/library/system.io.streamwriter.autoflush.aspx

--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5