Rumah > pembangunan bahagian belakang > C++ > Bagaimana dengan Cekap Menukar Jadual Data kepada Fail CSV dalam C#?

Bagaimana dengan Cekap Menukar Jadual Data kepada Fail CSV dalam C#?

Patricia Arquette
Lepaskan: 2025-01-15 15:31:42
asal
951 orang telah melayarinya

How to Efficiently Convert a DataTable to a CSV File in C#?

Penukaran Jadual Data kepada CSV dalam C#

Apabila menyimpan data Jadual Data ke fail CSV, anda mungkin menghadapi masalah dengan pemisahan data yang salah. Penyelesaian disediakan di bawah:

Pertimbangkan kod berikut:

StringBuilder sb = new StringBuilder();
foreach (DataColumn col in dt.Columns)
{
    sb.Append(col.ColumnName + ',');
}
sb.Remove(sb.Length - 1, 1);
sb.Append(Environment.NewLine);

foreach (DataRow row in dt.Rows)
{
    // ... (此处代码仅写入每一行的第一个单元格数据) ...
}

File.WriteAllText("test.csv", sb.ToString());
Salin selepas log masuk

Fail CSV yang dibuat oleh kod di atas hanya mengandungi data untuk sel pertama setiap baris. Untuk menyelesaikan masalah ini, pendekatan yang lebih mantap boleh digunakan:

.NET 3.5 dan ke atas

StringBuilder sb = new StringBuilder();
string[] columnNames = dt.Columns.Cast<DataColumn>().Select(column => column.ColumnName).ToArray();
sb.AppendLine(string.Join(",", columnNames));

foreach (DataRow row in dt.Rows)
{
    string[] fields = row.ItemArray.Select(field => field.ToString()).ToArray();
    sb.AppendLine(string.Join(",", fields));
}

File.WriteAllText("test.csv", sb.ToString());
Salin selepas log masuk

.NET 4.0 dan ke atas

Untuk .NET 4.0 dan ke atas, kod boleh dipermudahkan lagi:

StringBuilder sb = new StringBuilder();
IEnumerable<string> columnNames = dt.Columns.Cast<DataColumn>().Select(column => column.ColumnName);
sb.AppendLine(string.Join(",", columnNames));

foreach (DataRow row in dt.Rows)
{
    IEnumerable<string> fields = row.ItemArray.Select(field => field.ToString());
    sb.AppendLine(string.Join(",", fields));
}

File.WriteAllText("test.csv", sb.ToString());
Salin selepas log masuk

Mengendalikan watak istimewa

Jika anda perlu mengendalikan aksara khas (seperti petikan berganda) dalam medan data, anda boleh mengubah suai blok gelung dalam kod:

foreach (DataRow row in dt.Rows)
{
    IEnumerable<string> fields = row.ItemArray.Select(field =>
        string.Concat("\"", field.ToString().Replace("\"", "\"\""), "\""));
    sb.AppendLine(string.Join(",", fields));
}
Salin selepas log masuk

Selain itu, untuk mengelakkan dokumen besar dalam ingatan, kandungan CSV boleh ditulis baris demi baris dan bukannya menulis keseluruhan dokumen sekaligus.

Atas ialah kandungan terperinci Bagaimana dengan Cekap Menukar Jadual Data kepada Fail CSV dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan