使用 IRONXL 如何在 C# 中將 CSV 文件讀取到 DataTable Jordi Bardia 發表日期:9月 29, 2025 下載 IronXL NuGet 下載 DLL 下載 開始免費試用 法學碩士副本 法學碩士副本 將頁面複製為 Markdown 格式,用於 LLMs 在 ChatGPT 中打開 請向 ChatGPT 諮詢此頁面 在雙子座打開 請向 Gemini 詢問此頁面 在雙子座打開 請向 Gemini 詢問此頁面 打開困惑 向 Perplexity 詢問有關此頁面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 複製連結 電子郵件文章 對於 .NET 開發人員來說,處理 CSV 檔案是一項常見的任務,無論是匯入銷售報告、處理庫存或同步客戶記錄。 將 CSV 檔案轉換為 DataTable 可以方便地進行操作、分析或插入資料庫表。 在 C# 中讀取 CSV 檔案可能很棘手,大檔案、不同的分隔符號或嵌入的逗號通常需要複雜的解析或使用 Excel。 IronXL 簡化了這個過程:只需幾行程式碼,即可從任何文件路徑讀取 CSV 文件,將其轉換為具有正確列標題的 DataTable,並準備進行批量資料庫操作——所有這些都無需 Excel。 本指南將教您如何: 將 CSV 檔案載入到 C# 中的 DataTable 中 處理不同的分隔符,例如逗號、製表符或分號 有效率地將資料表直接匯入 SQL Server 可靠地管理大型資料集,而不會出現記憶體問題 最後,您將擁有一個完整的、實用的工作流程,可以使用 IronXL 在 .NET 應用程式中將 CSV 資料轉換為可操作的資訊。 為什麼CSV到DataTable的轉換至關重要? CSV 轉 DataTable 轉換可讓開發人員將逗號分隔值(CSV 資料)轉換為結構化物件(如 DataTable),以便進行進一步處理。 無論您是處理庫存資料、客戶記錄還是交易日誌,能夠有效率地將 CSV 轉換為新的 DataTable 都至關重要。 使用第一行作為列標題,可以確保資料表列與資料庫表架構保持一致。 傳統方法在處理大型檔案、不同分隔符號或記憶體管理方面常常遇到困難。 IronXL 消除了這些挑戰,並能無縫處理不同的分隔符號、帶有引號的字段和嵌入式逗號。 IronXL 的 CSV 讀取功能消除了這些常見的痛點。 如何安裝 IronXL? 使用 IronXL 只需簡單安裝 NuGet 套件即可。 在 Visual Studio 中開啟 NuGet 套件管理器控制台並執行: Install-Package IronXL.Excel 安裝完成後,將 IronXL 命名空間新增至您的專案: using IronXL; using System.Data; using IronXL; using System.Data; Imports IronXL Imports System.Data $vbLabelText $csharpLabel 這樣一來,使用者無需依賴 Excel 即可使用所有強大的 CSV 處理功能。 有關 IronXL 豐富的 API 的更多詳細信息,請參閱API 參考文檔。 !{--010011000100100101000010010100100100000101010010010110010101111101001110010101010101010101010101010101010101010 0100010111110100100101001101010100010000010100110001001100010111110100001001001100010011110010101010 如何將CSV檔案轉換為資料表? IronXL 的優點在於它的簡潔性。 以下是如何讀取 CSV 檔案並將其轉換為 DataTable 的方法: // Load CSV file into a WorkBook object WorkBook workbook = WorkBook.LoadCSV("sales_data.csv", fileFormat: ExcelFileFormat.XLSX); // Access the default worksheet WorkSheet worksheet = workbook.DefaultWorkSheet; // Convert to DataTable with headers DataTable dataTable = worksheet.ToDataTable(true); // Display the data foreach (DataRow row in dataTable.Rows) { foreach (var item in row.ItemArray) { Console.Write($"{item}\t"); } Console.WriteLine(); } // Load CSV file into a WorkBook object WorkBook workbook = WorkBook.LoadCSV("sales_data.csv", fileFormat: ExcelFileFormat.XLSX); // Access the default worksheet WorkSheet worksheet = workbook.DefaultWorkSheet; // Convert to DataTable with headers DataTable dataTable = worksheet.ToDataTable(true); // Display the data foreach (DataRow row in dataTable.Rows) { foreach (var item in row.ItemArray) { Console.Write($"{item}\t"); } Console.WriteLine(); } IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel LoadCSV 方法能夠智慧地解析您的 CSV 文件,自動處理常見情況,例如帶有引號的欄位和嵌入的逗號。 fileFormat 參數告訴 IronXL 如何在內部解釋 CSV 數據,確保將其視為 Excel 相容的結構。 載入完成後,ToDataTable(true) 方法會將工作表轉換為 DataTable,參數 \ true\表示第一行套用作列標題。 這樣就產生了一個結構清晰、列命名與 CSV 標題相符的資料表。 如需了解更多進階操作選項,請瀏覽完整的 Excel 轉資料表教學。 如何將資料表匯入 SQL Server? 有了資料表之後,使用 SqlBulkCopy 將其匯入 SQL Server 會變得非常有效率: using System.Data; using Microsoft.Data.SqlClient; using IronXL; class Program { static void Main(string[] args) { // Create connection string string connectionString = @"Data Source=localhost;Initial Catalog=SalesDB; Integrated Security=True;TrustServerCertificate=True;"; // Read CSV into DataTable WorkBook workbook = WorkBook.LoadCSV("inventory_report.csv"); DataTable dataTable = workbook.DefaultWorkSheet.ToDataTable(true); // Bulk insert into SQL Server using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection)) { // Set destination table name bulkCopy.DestinationTableName = "dbo.Inventory"; // Map DataTable columns to SQL table columns bulkCopy.ColumnMappings.Add("ProductCode", "product_code"); bulkCopy.ColumnMappings.Add("Quantity", "quantity"); bulkCopy.ColumnMappings.Add("LastUpdated", "last_updated"); // Set batch size for better performance bulkCopy.BatchSize = 1000; // Write data to SQL Server bulkCopy.WriteToServer(dataTable); } } Console.WriteLine($"Successfully imported {dataTable.Rows.Count} records"); } } using System.Data; using Microsoft.Data.SqlClient; using IronXL; class Program { static void Main(string[] args) { // Create connection string string connectionString = @"Data Source=localhost;Initial Catalog=SalesDB; Integrated Security=True;TrustServerCertificate=True;"; // Read CSV into DataTable WorkBook workbook = WorkBook.LoadCSV("inventory_report.csv"); DataTable dataTable = workbook.DefaultWorkSheet.ToDataTable(true); // Bulk insert into SQL Server using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection)) { // Set destination table name bulkCopy.DestinationTableName = "dbo.Inventory"; // Map DataTable columns to SQL table columns bulkCopy.ColumnMappings.Add("ProductCode", "product_code"); bulkCopy.ColumnMappings.Add("Quantity", "quantity"); bulkCopy.ColumnMappings.Add("LastUpdated", "last_updated"); // Set batch size for better performance bulkCopy.BatchSize = 1000; // Write data to SQL Server bulkCopy.WriteToServer(dataTable); } } Console.WriteLine($"Successfully imported {dataTable.Rows.Count} records"); } } IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel SqlBulkCopy 類別為大規模資料導入提供了卓越的效能。 ColumnMappings 集合可讓您將 DataTable 列對應到具有不同名稱的資料庫列,從而確保您的資料架構具有靈活性。 BatchSize 屬性透過分塊處理記錄而不是一次載入所有內容來優化記憶體使用。 這種方法可以有效率地處理數百萬筆記錄,使其成為企業級資料操作的理想選擇。 了解更多關於IronXL 的資料集和資料表功能的資訊。 輸出 在這裡,我們可以使用 SSMS 中的查詢*SELECT FROM dbo.Inventory;**來檢查我們的 CSV 資料是否實際匯入 SQL Server 中。 首先,讓我們來看看範例 CSV 檔案中使用的資料: 如何在 C# 中將 CSV 檔案讀入 DataTable:圖 2 - CSV 資料範例 現在,如果您查看查詢的輸出結果,可以看到它已成功將每一列、每一列標題和每一行複製到資料庫表中。 如何在 C# 中將 CSV 檔案讀入 DataTable:圖 3 - 顯示匯入記錄的資料庫視圖 如何處理不同的分隔符號? 並非所有 CSV 檔案都使用逗號。 IronXL 可以無縫處理各種分隔符號: using IronXL; using System; using System.Data; using System.IO; class Program { static void Main() { // --- Tab-delimited file --- string tsvPath = @"export_data.tsv"; WorkBook tsvWorkbook = WorkBook.LoadCSV(tsvPath, ExcelFileFormat.XLSX, "\t"); // --- Semicolon-delimited file --- string semiPath = @"european_data.csv"; string tempCsv = Path.Combine(Path.GetTempPath(), "european_data_comma.csv"); // Replace semicolons with commas for proper parsing var lines = File.ReadAllLines(semiPath); for (int i = 0; i < lines.Length; i++) { lines[i] = lines[i].Replace(';', ','); } File.WriteAllLines(tempCsv, lines); WorkBook semiWorkbook = WorkBook.LoadCSV(tempCsv, ExcelFileFormat.XLSX); // Print both workbooks PrintWorkbook(tsvWorkbook, "Tab-delimited File"); PrintWorkbook(semiWorkbook, "Semicolon-delimited File"); } static void PrintWorkbook(WorkBook workbook, string name) { Console.WriteLine($"\n--- {name} ---\n"); DataTable dt = workbook.DefaultWorkSheet.ToDataTable(true); // Print column headers foreach (DataColumn col in dt.Columns) { Console.Write($"{col.ColumnName}\t"); } Console.WriteLine(); // Print rows foreach (DataRow row in dt.Rows) { foreach (var item in row.ItemArray) { Console.Write($"{item}\t"); } Console.WriteLine(); } } } using IronXL; using System; using System.Data; using System.IO; class Program { static void Main() { // --- Tab-delimited file --- string tsvPath = @"export_data.tsv"; WorkBook tsvWorkbook = WorkBook.LoadCSV(tsvPath, ExcelFileFormat.XLSX, "\t"); // --- Semicolon-delimited file --- string semiPath = @"european_data.csv"; string tempCsv = Path.Combine(Path.GetTempPath(), "european_data_comma.csv"); // Replace semicolons with commas for proper parsing var lines = File.ReadAllLines(semiPath); for (int i = 0; i < lines.Length; i++) { lines[i] = lines[i].Replace(';', ','); } File.WriteAllLines(tempCsv, lines); WorkBook semiWorkbook = WorkBook.LoadCSV(tempCsv, ExcelFileFormat.XLSX); // Print both workbooks PrintWorkbook(tsvWorkbook, "Tab-delimited File"); PrintWorkbook(semiWorkbook, "Semicolon-delimited File"); } static void PrintWorkbook(WorkBook workbook, string name) { Console.WriteLine($"\n--- {name} ---\n"); DataTable dt = workbook.DefaultWorkSheet.ToDataTable(true); // Print column headers foreach (DataColumn col in dt.Columns) { Console.Write($"{col.ColumnName}\t"); } Console.WriteLine(); // Print rows foreach (DataRow row in dt.Rows) { foreach (var item in row.ItemArray) { Console.Write($"{item}\t"); } Console.WriteLine(); } } } IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 此程式碼將具有不同分隔符號的 CSV 檔案載入到 IronXL WorkBook 物件中。 以製表符分隔的檔案使用"\t"作為分隔符號讀取,而以分號分隔的檔案在載入前會轉換為標準 CSV 格式。 每個工作簿的預設工作表都會透過 ToDataTable(true) 轉換為 DataTable,其中第一行用作列標題。 PrintWorkbook 方法隨後遍歷 DataTable,並在控制台中顯示數據,包括標題和所有行。 這種靈活性解決了 開發人員討論的許多常見的 CSV 解析難題。 輸出 從我們的控制台輸出中可以看到,儘管兩個檔案最初使用不同的分隔符,但它們都已正確格式化為資料表。 如何在 C# 中將 CSV 檔案讀入 DataTable:圖 4 - 不同分隔符號的輸出 結論 IronXL 將複雜的 CSV 資料庫匯入任務轉換為簡單可靠的流程。 只需幾行程式碼,您就可以: 從任意檔案路徑讀取 CSV 文件 將 CSV 資料轉換為新的資料表 保留列標題和資料表列 有效率地將數百萬行資料匯入資料庫表 該程式庫會自動處理 CSV 解析、記憶體管理和資料類型轉換等複雜細節,讓您可以專注於業務邏輯,而不是檔案處理細節。 準備好簡化您的資料匯入工作流程了嗎? 立即開始免費試用,找到最適合您團隊需求的產品。 常見問題解答 在 C# 中將 CSV 檔案讀入 DataTable 的最佳方式是什麼? 使用 IronXL,您可以透過我們的開發人員指南中提供的簡單程式碼範例,在 C# 中有效率地將 CSV 檔案讀取至 DataTable。 為什麼要使用 IronXL 進行 CSV 到 DataTable 的轉換? IronXL 提供了直接的 API 來解析 CSV 檔案並將其轉換成 DataTables,讓您可以輕鬆地在 C# 中操作和分析資料。 轉換為 DataTables 時,IronXL 可以處理大型 CSV 檔案嗎? 是的,IronXL 旨在高效處理大型 CSV 檔案,並將其轉換為 DataTables,而不會產生效能問題。 IronXL 是否支援將 CSV 轉換為 DataTable 後的資料處理? 絕對的,一旦您使用 IronXL 將 CSV 檔案轉換成 DataTable,您就可以輕鬆地根據需要操作和分析資料。 如何使用 IronXL 將 CSV 資料匯入資料庫? 使用 IronXL 將 CSV 檔案轉換為 DataTable 之後,您就可以使用 C# 的標準資料庫連線功能將資料插入資料庫。 IronXL 適合在企業應用程式中處理 CSV 檔案嗎? 是的,IronXL 旨在處理企業應用程式中的 CSV 處理任務,提供強大的效能與可靠性。 在 C# 中將 CSV 檔案轉換為 DataTables 有哪些優點? 將 CSV 檔案轉換為 DataTables,可以更輕鬆地進行資料處理、分析以及與資料庫整合,增強應用程式的資料處理能力。 除了 CSV 之外,IronXL 還能用於其他試算表檔案類型嗎? 是的,IronXL 支援各種試算表檔案類型,包括 Excel 格式,可在 C# 中實現多樣化的資料處理功能。 Jordi Bardia 立即與工程團隊聊天 軟體工程師 Jordi 在 Python、C# 和 C++ 上最得心應手,當他不在 Iron Software 展現技術時,便在做遊戲編程。在分担产品测测试,产品开发和研究的责任时,Jordi 为持续的产品改进增值。他说这种多样化的经验使他受到挑战并保持参与, 而这也是他与 Iron Software 中工作一大乐趣。Jordi 在佛罗里达州迈阿密长大,曾在佛罗里达大学学习计算机科学和统计学。 相關文章 發表日期 12月 19, 2025 如何使用 C# Interop 與 IronXL 在 Excel 中建立資料透視表 在無需 Office 依賴的情況下在 C# 中構建 Excel 樞紐分析表。IronXL 對無需 Excel Interop 的樞紐型報告創建提供了強大的數據操作功能。 閱讀更多 發表日期 12月 18, 2025 使用 IronXL 將 C# DataGridView 匯出到 Excel,並帶有列標題 學習如何在 C# 教程中使用 IronXL library 將 DataGridView 資料匯出為 Excel 同時保留列標題。分步教學。 閱讀更多 發表日期 12月 18, 2025 如何在 C# 中使用 IronXL 創建 Excel 生成報告 使用 IronXL 在 C# 中創建 Excel 報告生成。學習構建擁有格式化公式和數據庫集成的專業報告。 閱讀更多 如何在 VB.NET 中開啟 Excel 文件如何在 VB.NET 中將數據集轉...
發表日期 12月 19, 2025 如何使用 C# Interop 與 IronXL 在 Excel 中建立資料透視表 在無需 Office 依賴的情況下在 C# 中構建 Excel 樞紐分析表。IronXL 對無需 Excel Interop 的樞紐型報告創建提供了強大的數據操作功能。 閱讀更多
發表日期 12月 18, 2025 使用 IronXL 將 C# DataGridView 匯出到 Excel,並帶有列標題 學習如何在 C# 教程中使用 IronXL library 將 DataGridView 資料匯出為 Excel 同時保留列標題。分步教學。 閱讀更多
發表日期 12月 18, 2025 如何在 C# 中使用 IronXL 創建 Excel 生成報告 使用 IronXL 在 C# 中創建 Excel 報告生成。學習構建擁有格式化公式和數據庫集成的專業報告。 閱讀更多