首頁 >後端開發 >C++ >如何有效地將CSV數據加載到.NET DataTable中?

如何有效地將CSV數據加載到.NET DataTable中?

Barbara Streisand
Barbara Streisand原創
2025-01-27 19:31:08945瀏覽

有效率地將CSV資料載入到.NET DataTable

將CSV資料載入DataTable是資料處理和分析中的常見任務。本文探討如何使用.NET的內建功能實現此目標,重點在於解決從CSV檔案建立架構的問題。

How to Efficiently Load CSV Data into a .NET DataTable?

使用標準ADO.NET功能

標準ADO.NET框架不直接支援讀取CSV檔案。但是,我們可以利用OleDb提供者透過建立架構定義檔來匯入CSV資料。

使用.INI檔案建立架構

要建立架構檔案(schema.ini),請依照下列步驟操作:

  1. 將以下程式碼放入名為schema.ini的檔案中:
<code>[FileName.csv]
Format=CSVDelimited
ColNameHeader=True
MaxScanRows=0</code>
  1. 將檔案保存在與CSV檔案相同的目錄中。

程式碼實作

以下程式碼示範如何使用具有架構定義檔的OleDb提供者將CSV資料載入到DataTable中:

<code class="language-csharp">using System.Data;
using System.Data.OleDb;
using System.Globalization;
using System.IO;

static DataTable GetDataTableFromCsv(string path, bool isFirstRowHeader)
{
    string header = isFirstRowHeader ? "Yes" : "No";

    string pathOnly = Path.GetDirectoryName(path);
    string fileName = Path.GetFileName(path);

    string sql = @"SELECT * FROM [" + fileName + "]";

    using (OleDbConnection connection = new OleDbConnection(
        @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pathOnly +
        ";Extended Properties=\"Text;HDR=" + header + "\""))
    using (OleDbCommand command = new OleDbCommand(sql, connection))
    using (OleDbDataAdapter adapter = new OleDbDataAdapter(command))
    {
        DataTable dataTable = new DataTable();
        dataTable.Locale = CultureInfo.CurrentCulture;
        adapter.Fill(dataTable);
        return dataTable;
    }
}</code>

此方法將CSV檔案路徑和一個標誌作為輸入,該標誌指示第一行是否包含列標題。它根據CSV資料傳回一個填充的DataTable。

這個方法接受CSV檔案路徑和一個布林值作為參數,指示第一行是否為表頭。它傳回一個填充了CSV資料的DataTable。 改進後的程式碼增加了using System.Globalization;using System.IO;命名空間引用,並更清楚地展示了程式碼的功能。

以上是如何有效地將CSV數據加載到.NET DataTable中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn