使用 IRONXL 如何在 C# 中将 CSV 文件读取到 DataTable Curtis Chau 已发布:九月 29, 2025 下载 IronXL NuGet 下载 DLL 下载 免费试用 法学硕士副本 法学硕士副本 将页面复制为 Markdown 格式,用于 LLMs 在 ChatGPT 中打开 向 ChatGPT 咨询此页面 在双子座打开 向 Gemini 询问此页面 在双子座打开 向 Gemini 询问此页面 打开困惑 向 Perplexity 询问有关此页面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 复制链接 电子邮件文章 处理CSV文件是.NET开发人员常见的任务,无论您是导入销售报告、处理库存还是同步客户记录。 将CSV文件转换为DataTable可以轻松进行操控、分析或插入到数据库表中。 在C#中读取CSV文件可能很棘手,大文件、不同分隔符或嵌入的逗号通常需要复杂的解析或使用Excel。 IronXL简化了这一过程:只需几行代码,您就可以从任何文件路径读取CSV文件,将其转换为具有正确列头的DataTable,并准备进行批量数据库操作——这一切都无需Excel。 在本指南中,您将学习如何: 在C#中将CSV文件加载到DataTable中 处理不同的分隔符,如逗号、制表符或分号 高效地直接将DataTable导入到SQL Server中 可靠地管理大数据集而不会遇到内存问题 最后,您将拥有一套完整、实用的工作流程,可以在您的.NET应用程序中使用IronXL将CSV数据转化为可行的信息。 为什么CSV到DataTable的转换必不可少? CSV到DataTable的转换允许开发人员将逗号分隔值(CSV数据)转换为像DataTable这样的结构化对象以便进一步处理。 无论您是处理库存数据、客户记录还是交易日志,高效地将CSV转换为新的DataTable是至关重要的。 使用第一行作为列头,您可以确保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 这提供了对所有强大的CSV处理能力的访问,而无需任何Excel依赖。 有关IronXL广泛API的更多详细信息,请参阅API参考文档。 使用 NuGet 安装 PM > Install-Package IronXL.Excel 在 IronXL 上查看 NuGet 快速安装。超过 1000 万次下载,它正以 C# 改变 PDF 开发。 您也可以下载 DLL。 如何将CSV转换为DataTable? 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头匹配的命名列的DataTable。 有关更高级的操作选项,请探索完整的Excel到DataTable教程。 如何将DataTable导入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的DataSet和DataTable功能。 输出 这里,我们可以在SSMS中使用查询*SELECT FROM dbo.Inventory;**来检查我们的CSV数据实际上已导入到SQL Server中。 首先,让我们看一下我们在示例CSV文件中使用的数据: 现在,如果查看我们的查询输出,我们可以看到它已成功将每一列、标题和行复制到数据库表中。 如何处理不同的分隔符? 并非所有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解析挑战。 输出 正如您所见,我们的控制台输出中,两个文件尽管开始使用不同的分隔符,均被正确格式化成数据表。 结论 IronXL将CSV数据库导入的复杂任务转化为直观、可靠的过程。 只需几行代码,您就可以: 从任何文件路径读取CSV文件 将CSV数据转换为新的DataTable 保留列头和DataTable列 高效地将数百万行导入到数据库表中 该库自动处理CSV解析、内存管理和数据类型转换的复杂性,让您专注于业务逻辑而不是文件处理细节。 准备好简化您的数据导入工作流程了吗? 开始您的免费试用以找到适合您团队需求的完美解决方案。 常见问题解答 在 C# 中将 CSV 文件读取到 DataTable 的最佳方法是什么? 使用 IronXL,您可以参照我们的开发者指南中的简单代码示例,轻松地将 CSV 文件读取到 C# 中的 DataTable。 为什么我应该使用 IronXL 进行 CSV 到 DataTable 转换? IronXL 提供简单明了的 API 用于解析 CSV 文件并将其转换为 DataTable,使您可以轻松在 C# 中操作和分析数据。 IronXL 在转换为 DataTable 时能处理大规模的 CSV 文件吗? 是的,IronXL 旨在高效处理大型 CSV 文件并将其转换为 DataTable,而不会出现性能问题。 IronXL 是否支持在将 CSV 转换为 DataTable 后进行数据操作? 当然,一旦您使用 IronXL 将 CSV 文件转换为 DataTable,您可以根据需要轻松操作和分析数据。 我如何使用 IronXL 将 CSV 数据导入到数据库中? 在使用 IronXL 将您的 CSV 文件转换为 DataTable 后,您可以使用 C# 中的标准数据库连接将数据插入到数据库中。 IronXL 适合在企业应用程序中处理 CSV 文件吗? 是的,IronXL 旨在处理企业应用程序中的 CSV 处理任务,提供强大的性能和可靠性。 将 CSV 文件转换为 C# 中的 DataTable 的优势是什么? 将 CSV 文件转换为 DataTable 可以更轻松地进行数据操作、分析和与数据库集成,从而增强您的应用程序的数据处理能力。 除了 CSV 之外,IronXL 能否用于其他电子表格文件类型? 是的,IronXL 支持包括 Excel 格式在内的各种电子表格文件类型,使其在 C# 中具有多功能的数据处理能力。 Curtis Chau 立即与工程团队聊天 技术作家 Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。 相关文章 已发布十二月 19, 2025 如何使用 C# Interop 与 IronXL.Excel 在 Excel 中创建透视表 无需 Office 依赖在 C# 中构建 Excel 数据透视表。IronXL 提供强大的数据处理功能,用于创建透视风格的报告,无需 Excel Interop 复杂化。 阅读更多 已发布十二月 18, 2025 C# 使用 IronXL.Excel 将带列标题的 DataGridView 导出到 Excel 学习如何在将DataGridView数据导出到Excel时保留列头。使用IronXL库的C#逐步教程。 阅读更多 已发布十二月 18, 2025 如何在 C# 中使用 IronXL 创建 Excel 报告 在 C# 中使用 IronXL 进行 Excel 报告生成。学习构建具有格式、公式和数据库集成的专业报告。 阅读更多 如何在 VB.NET 中打开 Excel 文件如何在 VB.NET 中将数据集转...
已发布十二月 19, 2025 如何使用 C# Interop 与 IronXL.Excel 在 Excel 中创建透视表 无需 Office 依赖在 C# 中构建 Excel 数据透视表。IronXL 提供强大的数据处理功能,用于创建透视风格的报告,无需 Excel Interop 复杂化。 阅读更多
已发布十二月 18, 2025 C# 使用 IronXL.Excel 将带列标题的 DataGridView 导出到 Excel 学习如何在将DataGridView数据导出到Excel时保留列头。使用IronXL库的C#逐步教程。 阅读更多
已发布十二月 18, 2025 如何在 C# 中使用 IronXL 创建 Excel 报告 在 C# 中使用 IronXL 进行 Excel 报告生成。学习构建具有格式、公式和数据库集成的专业报告。 阅读更多