Comment enregistrer des données volumineuses dans un fichier
-
28-10-2019 - |
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();
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:
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.