2017-02-15 1 views
0

J'ai un problème avec l'exportation de données de DataGridView vers un fichier .txt.Exportateur DataGridView en C#

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using System.IO; 

namespace TSQ 
{ 
    class TxtExporter : IExporter 
    { 
     public void Export(DataGridView dataGrid, Output output) 
     { 
      if (output == null) 
       return; 

      string filePath = output.TemplatePath; 

      try 
      { 
       using (StreamWriter sw = new StreamWriter(filePath)) 
       { 
        for (int row = 0; row < dataGrid.Rows.Count; row++) 
        { 
         for (int col = 0; col < dataGrid.Columns.Count; col++) 
         { 
          sw.Write(dataGrid[col, row].Value.ToString()); 
          sw.Write('\t'); 
         } 
         sw.WriteLine(); 
         //sw.Flush(); <- also doesn`t work if uncommented 
        } 
       } 
      } 
      catch (Exception) 
      { 
       //MessageBox.Show(exc.Message); 
       throw; 
      } 
     } 
    } 
} 

Lorsque je télécharge un gros volumes de données de base de données dans gridview (plus de 350K dossiers) et je tente de l'exporter dans un fichier txt, après environ 200K des disques que je reçois « OutOfMemoryException » ... Avez-vous des idée comment exporter des données volumineuses à partir de DataGridView?

Meilleures salutations, Michael

+0

Avez-vous essayé une boucle à travers votre DataGridView et enregistrer le contenu à un StringBuilder(), puis en utilisant StreamWriter pour écrire cette chaîne dans votre fichier texte à la place? –

+1

Copie possible de [Ecriture dans un fichier texte à partir de DataGridView sous forme de fenêtres C#] (http://stackoverflow.com/questions/19311535/writing-to-a-text-file-from-datagridview-in-c-sharp- Windows-forme) –

+0

J'essayais avec le presse-papiers mais cela fonctionne pour ralentir et cause également l'exception de mémoire :( – Roofy

Répondre

0

Si elle ne doit pas être un fichier .txt, essayez d'exporter vers Excel à la place.

Ref How to Export DataGridView Data to Excel by using Excel Object

+0

À ce moment j'ai l'option pour exporter dans Excel - j'emploie juste une autre classe pour ce "ExcelExporter". prend beaucoup de temps et avec de grandes données (> 100K) il provoque aussi OutOfMemoryException – Roofy