Question

J'ai une liste de peut-être 50 000 entrées qui sont remplies dans datagrid dans wpf.Maintenant, je veux enregistrer les données de la liste dans un fichier qui peut être du texte, ou de préférence CSV.Comme la liste est trop grande.Il y a un problème avec ma méthode implémentée qui peut être une simple écriture de fichier texte ou la méthode pour copier le contenu de la grille de données dans le presse-papiers, puis de nouveau dans une chaîne, puis cette chaîne dans un fichier à l'aide de StreamReader.Cela prend environ 4 à 5 minutes même s'il est en tâche de fond.

Est-il possible d'enregistrer rapidement une énorme liste dans un fichier?

J'utilise DataGrid dans WPF

CODE

 dataGrid1.SelectAllCells();
            dataGrid1.ClipboardCopyMode = DataGridClipboardCopyMode.IncludeHeader;
            ApplicationCommands.Copy.Execute(null, dataGrid1);
   String result = (string)Clipboard.GetData(DataFormats.CommaSeparatedValue);


///Never reach to step Below thread stays on above line
                dataGrid1.UnselectAllCells();
                Clipboard.Clear();
                StreamWriter file = new System.IO.StreamWriter(SavePageRankToPDF.FileName);
                file.WriteLine(result);
                file.Close();
Était-ce utile?

La solution

Au lieu d'utiliser le presse-papiers, pourquoi ne pas parcourir la table de données et créer le fichier csv.

<❯Mise à jour

Voici quelques exemples:

Convertir DataTable en flux CSV

Conversion de DataSet \ DataTable en CSV

Autres conseils

Une chose qui vous aidera est de ne pas charger TOUTES vos données dans la grille de données lorsque vous l'utilisez à des fins d'affichage.Ce serait une bonne idée d'utiliser la pagination: ne chargez que les données dans la grille de données qui seront nécessaires pour les calculs ou l'affichage.Si l'utilisateur souhaite voir / utiliser plus de données, revenez à votre source de données et obtenez davantage de données.Non seulement votre application fonctionnera plus rapidement, mais vous utiliserez beaucoup moins de mémoire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top