有效率地將CSV資料載入到.NET DataTable
將CSV資料載入DataTable是資料處理和分析中的常見任務。本文探討如何使用.NET的內建功能實現此目標,重點在於解決從CSV檔案建立架構的問題。
使用標準ADO.NET功能
標準ADO.NET框架不直接支援讀取CSV檔案。但是,我們可以利用OleDb提供者透過建立架構定義檔來匯入CSV資料。
使用.INI檔案建立架構
要建立架構檔案(schema.ini),請依照下列步驟操作:
<code>[FileName.csv] Format=CSVDelimited ColNameHeader=True MaxScanRows=0</code>
程式碼實作
以下程式碼示範如何使用具有架構定義檔的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中文網其他相關文章!