Exportation de données de masse de SQL Server vers Excel dans VB

J'ai un code qui fonctionne pour des sets de données plus petits. Je reçois une erreur «hors memory» avec les énormes sets de données que j'utilise (800k lignes, 25 colonnes). J'essayais de find un moyen de changer cette colonne d'export en masse par colonne, ou peut-être split des sets de lignes, au lieu de tout en même time.

De toute évidence, il ne peut pas gérer autant de données. Je ne pouvais pas comprendre comment en séparer certains. Des idées? Merci!

For Each dt As System.Data.DataTable In ds.Tables ' Copy the DataTable to an object array Dim rawData(dt.Rows.Count, dt.Columns.Count - 1) As Object ' Copy the column names to the first row of the object array For col = 0 To dt.Columns.Count - 1 rawData(0, col) = dt.Columns(col).ColumnName Next ' Copy the values to the object array For col = 0 To dt.Columns.Count - 1 For row = 0 To dt.Rows.Count - 1 rawData(row + 1, col) = dt.Rows(row).ItemArray(col) Next Next ' Calculate the final column letter Dim finalColLetter As Ssortingng = Ssortingng.Empty Dim colCharset As Ssortingng = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" Dim colCharsetLen As Integer = colCharset.Length If dt.Columns.Count > colCharsetLen Then finalColLetter = colCharset.Subssortingng( _ (dt.Columns.Count - 1) \ colCharsetLen - 1, 1) End If finalColLetter += colCharset.Subssortingng( _ (dt.Columns.Count - 1) Mod colCharsetLen, 1) ' Fast data export to Excel Dim excelRange As Ssortingng = Ssortingng.Format("A1:{0}{1}", finalColLetter, dt.Rows.Count + 1) excelSheet.Range(excelRange, Type.Missing).Value2 = rawData excelSheet = Nothing Next 

Existe-t-il un autre code qui manipule la feuille de calcul Excel? Sinon, il serait probablement plus rapide d'écrire ceci dans un file text en format CSV. Excel ouvrira le CSV et le présentera comme une feuille de calcul normale.