Konvertieren von DataTable in CSV in C#
Dieser Artikel führt Sie durch die Konvertierung einer DataTable in eine CSV-Datei mit C#. Zunächst müssen wir wissen, was CSV ist, also lassen Sie uns darauf eingehen.
Die Daten in einer Comma Split Values, auch bekannt als CSV-Datei, werden durch Kommas und nicht durch Leerzeichen in ihre jeweiligen Spalten getrennt. Eine andere Verwendung einer CSV-Datei besteht darin, die Datei sofort in Excel zu öffnen, wenn die Daten automatisch in die entsprechenden Zellen in Excel eingefügt werden.
Konvertieren Sie DataTable in CSV in C#
Der erste Schritt beim Konvertieren einer DataTable in eine CSV-Datei besteht darin, eine DataTable zu erstellen. Die dazu notwendigen Schritte sind in den folgenden Absätzen skizziert.
Erstellen und füllen Sie die DataTable
-
Zunächst müssen wir die folgenden Bibliotheken importieren:
using System; using System.Collections.Generic; using System.Data; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks;
-
Wir haben eine Klasse namens
datacreation
mit einer Methode namensCreateData()
erstellt, die eine DataTable als Rückgabewert generiert.public static class datacreation { public static DataTable CreateData() {} }
-
Um mit der Dateneingabe zu beginnen, müssen wir ein
DataTable
-Objekt namensdt
inCreateData()
erstellen.DataTable dt = new DataTable();
-
Nachdem das Objekt initialisiert wurde, besteht der nächste Schritt darin, Datenspalten zur DataTable
dt
hinzuzufügen. Wir haben die FelderRollnum
,Firstname
,Lastname
undSubject
eingefügt, und es steht Ihnen frei, weitere Bereiche hinzuzufügen, die Sie benötigen.dt.Columns.Add("RollNum", typeof(int)); dt.Columns.Add("Firstname", typeof(string)); dt.Columns.Add("Lastname", typeof(string)); dt.Columns.Add("Subjects", typeof(string));
-
Füllen Sie anschließend die Informationen in diesen Spalten oder Feldern aus.
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");
-
Die Funktion
CreateData()
gibt eine Tabelle vom Typ DataTable zurück.return dt;
Konvertieren Sie die DataTable in CSV in C#
Nachdem wir die DataTable erstellt haben, besteht der nächste Schritt darin, den Code zu schreiben, der die DataTable in CSV konvertiert.
-
Wir haben der Klasse
implementCSV
eine neue Methode namensConvertTocsv
hinzugefügt. Die Variablendt
undpath
sind die Parameter, die es braucht.public static class implementCSV { public static void ConvertTocsv(this DataTable dt, string path) {} }
-
In der
ConvertTocsv
-Methode haben wir einStreamWriter
-Objekt namenss
erstellt, das Daten in den angegebenen Pfad schreibt.StreamWriter s = new StreamWriter(path, false);
-
Wir verwenden eine
for
-Schleife, um die Daten aus der DataTable zu trennen, indem wir Kommas zwischen den einzelnen Spalten einfügen.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);
-
Anschließend verwenden wir nun eine
foreach
-Schleife, die Daten aus der DataTabledt
mit einem Komma schreibt.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); }
Vollständiger Quellcode
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();
}
}
}
Ein Windows-Formular erstellen
Nachdem die Daten in der DataTable erstellt und durch Kommas getrennt wurden, wird im nächsten Schritt ein Windows Form erstellt, in dem die Daten angezeigt und anschliessend in das .csv
-Format konvertiert werden können.
-
Um zu beginnen, erstellen wir ein Windows-Formular, wie unten gezeigt, und fügen darin eine
DataGridView
und eine Schaltfläche namensConvert data to CSV
ein. EinDataGridView
, der die erstellten Daten anzeigt, und ein Button, der die DataTable in CSV konvertiert, sind enthalten. -
Wenn Sie das Windows Form ausgeführt haben, sieht es so aus:
Schreiben Sie den Code für das Windows Form
Nachdem wir das Windows Form erstellt haben, ist der nächste Schritt, den Code für die Schaltfläche Daten in CSV konvertieren
zu schreiben.
-
Initialisieren Sie ein Objekt und füllen Sie es mit Daten, indem Sie die unten aufgeführten Methoden aufrufen.
DataTable dt = datacreation.CreateData();
-
Mit
OpenSavefileDialog()
kann die Datei unter dem angegebenen Namen gespeichert werden.string filename = OpenSavefileDialog();
-
ConvertTocsv
wird verwendet, um aus den von uns erstellten Daten eine CSV-Datei zu erstellen.dt.ConvertTocsv(filename);
Windows Form-Quellcode
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.
LinkedInVerwandter Artikel - Csharp CSV
- C# Schreiben von Daten in eine CSV-Datei
- C# eine CSV-Datei lesen und ihre Werte in einem Array speichern
- Lesen Sie eine CSV-Datei in eine Datentabelle in C#
- CSV-Datei parsen in C#