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

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

Barbara Streisand
Lepaskan: 2025-01-15 15:41:44
asal
454 orang telah melayarinya

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

Menukar Jadual Data dengan Cekap kepada Fail CSV dalam C#

Menukar Jadual Data kepada fail CSV ialah operasi yang kerap dalam pemprosesan data. Walau bagaimanapun, pengendalian yang tidak betul boleh menyebabkan kerosakan data, selalunya mengakibatkan nilai yang digabungkan dalam sel pertama setiap baris. Panduan ini menunjukkan pendekatan yang betul, mengelakkan perangkap biasa.

Mengatasi Ralat Biasa:

Kesilapan biasa melibatkan penambahan koma tambahan pada penghujung setiap baris, menyebabkan salah jajaran data. Contoh ini mengelakkan isu itu.

Pelaksanaan Optimum:

Untuk .NET 4.0 dan lebih baharu:

Coretan kod yang dioptimumkan ini menukarkan Jadual Data kepada fail CSV dengan cekap:

<code class="language-csharp">StringBuilder sb = new StringBuilder();
sb.AppendLine(string.Join(",", dt.Columns.Cast<DataColumn>().Select(column => column.ColumnName)));

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());</code>
Salin selepas log masuk

Mengendalikan Watak Khas (cth., koma dalam medan):

Untuk mengelakkan kerosakan data yang disebabkan oleh aksara khas seperti koma dalam medan data, gunakan kaedah yang dipertingkatkan ini:

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

Kod ini melampirkan setiap medan dalam petikan berganda dan melepaskan sebarang petikan berganda sedia ada dalam medan.

Pengurusan Memori yang Diperbaiki: Penulisan Baris demi Baris:

Untuk Jadual Data yang sangat besar, menulis CSV baris demi baris meningkatkan kecekapan ingatan:

<code class="language-csharp">using (var writer = new StreamWriter("test.csv"))
{
    writer.WriteLine(string.Join(",", dt.Columns.Cast<DataColumn>().Select(column => column.ColumnName)));
    foreach (DataRow row in dt.Rows)
    {
        writer.WriteLine(string.Join(",", row.ItemArray.Select(field => string.Concat("\"", field.ToString().Replace("\"", "\"\""), "\""))));
    }
}</code>
Salin selepas log masuk

Pendekatan ini mengelakkan memuatkan keseluruhan CSV ke dalam memori sekaligus, menjadikannya sesuai untuk mengendalikan set data besar-besaran. Ingat untuk memasukkan using pernyataan yang diperlukan untuk System.Data, System.IO, System.Linq dan System.Text.

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

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan