Convertir DataTable en CSV en C#
Cet article vous guidera dans la conversion d’un DataTable en un fichier CSV à l’aide de C#. Pour commencer, nous devons savoir ce qu’est CSV, alors allons-y.
Les données d’un fichier Comma Split Values, également connu sous le nom de fichier CSV, sont séparées dans leurs colonnes respectives par des virgules plutôt que par des espaces. Une autre utilisation d’un fichier CSV consiste à ouvrir le fichier dans Excel immédiatement lorsque les données sont automatiquement placées dans les cellules appropriées dans Excel.
Convertir DataTable en CSV en C#
La première étape de la conversion d’un DataTable en fichier CSV consiste à créer un DataTable. Les étapes à suivre pour le faire sont décrites dans les paragraphes suivants.
Créer et remplir le DataTable
-
Pour commencer, nous devons importer les bibliothèques suivantes :
using System; using System.Collections.Generic; using System.Data; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks;
-
Nous avons créé une classe nommée
datacreation
avec une méthode appeléeCreateData()
qui génère un DataTable comme valeur de retour.public static class datacreation { public static DataTable CreateData() {} }
-
Pour commencer la saisie des données, nous devons créer un objet
DataTable
nommédt
dansCreateData()
.DataTable dt = new DataTable();
-
Une fois l’objet initialisé, l’étape suivante consiste à ajouter des colonnes de données au DataTable
dt
. Nous avons inclus les champsRollnum
,Firstname
,Lastname
etSubject
, et vous êtes libre d’ajouter tout autre domaine dont vous avez besoin.dt.Columns.Add("RollNum", typeof(int)); dt.Columns.Add("Firstname", typeof(string)); dt.Columns.Add("Lastname", typeof(string)); dt.Columns.Add("Subjects", typeof(string));
-
Ensuite, remplissez les informations dans ces colonnes ou champs.
dt.Rows.Add(3227, "Zeeshan", "Khan", "C#"); dt.Rows.Add(3290, "Bubby", "Zeeshan", "Java"); dt.Rows.Add(3247, "Osama", "shanii", "C++"); dt.Rows.Add(3156, "Haseeb", "Bhatti", "Python"); dt.Rows.Add(3223, "Saad", "Shukhri", "Mongo Db"); dt.Rows.Add(3267, "Sheraz", "Malik", "MySQl"); dt.Rows.Add(3288, "Nabeel", "Sindho", "PHP"); dt.Rows.Add(3299, "Ahsan", "Chishti", "C");
-
La fonction
CreateData()
retournera une table de type DataTable.return dt;
Convertir le DataTable en CSV en C#
Après avoir créé le DataTable, l’étape suivante consiste à écrire le code qui convertira le DataTable en CSV.
-
Nous avons ajouté une nouvelle méthode appelée
ConvertTocsv
à la classeimplementCSV
. Les variablesdt
etpath
sont les paramètres qu’il prend.public static class implementCSV { public static void ConvertTocsv(this DataTable dt, string path) {} }
-
Dans la méthode
ConvertTocsv
, nous avons créé un objetStreamWriter
appelés
, qui écrira les données dans le chemin spécifié.StreamWriter s = new StreamWriter(path, false);
-
Nous allons utiliser une boucle
for
pour séparer les données du DataTable en insérant des virgules entre chaque colonne.for (int i = 0; i < dt.Columns.Count; i++) { s.Write(dt.Columns[i]); if (i < dt.Columns.Count - 1) { s.Write(","); } } s.Write(s.NewLine);
-
Suite à cela, nous allons maintenant utiliser une boucle
foreach
, qui écrira les données du DataTabledt
avec une virgule.foreach (DataRow dr in dt.Rows) { for (int i = 0; i < dt.Columns.Count; i++) { if (!Convert.IsDBNull(dr[i])) { string value = dr[i].ToString(); if (value.Contains(',')) { value = String.Format("\"{0}\"", value); s.Write(value); } else { s.Write(dr[i].ToString()); } } if (i < dt.Columns.Count - 1) { s.Write(","); } } s.Write(s.NewLine); }
Code source complet
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DataTableExport {
public static class datacreation {
public static DataTable CreateData() {
DataTable dt = new DataTable();
dt.Columns.Add("RollNum", typeof(int));
dt.Columns.Add("Firstname", typeof(string));
dt.Columns.Add("Lastname", typeof(string));
dt.Columns.Add("Subjects", typeof(string));
dt.Rows.Add(3227, "Zeeshan", "Khan", "C#");
dt.Rows.Add(3290, "Bubby", "Zeeshan", "Java");
dt.Rows.Add(3247, "Osama", "shanii", "C++");
dt.Rows.Add(3156, "Haseeb", "Bhatti", "Python");
dt.Rows.Add(3223, "Saad", "Shukhri", "Mongo Db");
dt.Rows.Add(3267, "Sheraz", "Malik", "MySQl");
dt.Rows.Add(3288, "Nabeel", "Sindho", "PHP");
dt.Rows.Add(3299, "Ahsan", "Chishti", "C");
return dt;
}
}
public static class implementCSV {
public static void ConvertTocsv(this DataTable dt, string path) {
StreamWriter s = new StreamWriter(path, false);
for (int i = 0; i < dt.Columns.Count; i++) {
s.Write(dt.Columns[i]);
if (i < dt.Columns.Count - 1) {
s.Write(",");
}
}
s.Write(s.NewLine);
foreach (DataRow dr in dt.Rows) {
for (int i = 0; i < dt.Columns.Count; i++) {
if (!Convert.IsDBNull(dr[i])) {
string value = dr[i].ToString();
if (value.Contains(',')) {
value = String.Format("\"{0}\"", value);
s.Write(value);
} else {
s.Write(dr[i].ToString());
}
}
if (i < dt.Columns.Count - 1) {
s.Write(",");
}
}
s.Write(s.NewLine);
}
s.Close();
}
}
}
Créer un formulaire Windows
Après avoir créé les données dans le DataTable et les avoir séparées à l’aide de virgules, l’étape suivante consiste à créer un formulaire Windows dans lequel les données peuvent être affichées puis converties au format .csv
.
-
Pour commencer, créons un formulaire Windows, comme indiqué ci-dessous, et à l’intérieur, nous mettrons un
DataGridView
et un bouton appeléConvert data to CSV
. UnDataGridView
qui affiche les données créées et un bouton qui convertit le DataTable en CSV sont inclus. -
Lorsque vous aurez fini d’exécuter le Windows Form, il ressemblera à ceci :
Écrire le code du formulaire Windows
Après avoir créé le formulaire Windows, l’étape suivante consiste à écrire le code du bouton Convert data to CSV
.
-
Initialisez un objet et remplissez-le avec des données en appelant les méthodes listées ci-dessous.
DataTable dt = datacreation.CreateData();
-
OpenSavefileDialog()
peut être utilisé pour enregistrer le fichier avec le nom donné.string filename = OpenSavefileDialog();
-
ConvertTocsv
sera utilisé pour créer un fichier CSV à partir des données que nous avons créées.dt.ConvertTocsv(filename);
Code source du formulaire Windows
public Form1() {
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e) {
DataTable dt = datacreation.CreateData();
dataGridView1.DataSource = dt;
}
private void btnCSV_Click(object sender, EventArgs e) {
DataTable dt = datacreation.CreateData();
string filename = OpenSavefileDialog();
dt.ConvertTocsv(filename);
}
private string OpenSavefileDialog() {
string filename = null;
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Filter = "csv File|*.csv";
saveFileDialog.Title = "Save";
DialogResult dialogResult = saveFileDialog.ShowDialog();
if (dialogResult == DialogResult.OK) {
filename = saveFileDialog.FileName;
}
return filename;
}
I have been working as a Flutter app developer for a year now. Firebase and SQLite have been crucial in the development of my android apps. I have experience with C#, Windows Form Based C#, C, Java, PHP on WampServer, and HTML/CSS on MYSQL, and I have authored articles on their theory and issue solving. I'm a senior in an undergraduate program for a bachelor's degree in Information Technology.
LinkedInArticle connexe - Csharp CSV
- C# Inscrire les données dans un fichier CSV
- C# lire un fichier CSV et stocker ses valeurs dans un tableau
- Analyser le fichier CSV en C#