IRONSOFTWAREHOME
USING IRONXL

C# CSV库:使用IronXL完整教程

Curtis Chau
Curtis Chau
Updated: 2026年6月28日

在 C# 中处理 CSV 文件需要一个能够处理除简单行解析之外的其他功能的库。 您需要可靠的编码检测、正确的分隔符处理、强类型识别,并且最好能够在 CSV 和 Excel 之间移动数据而无需维护两个单独的依赖项。 IronXL在一个.NET库中实现了所有这些功能——无需 Microsoft Office,无需 COM 互操作,也无需脆弱的变通方法。 无论您是在服务器上处理平面数据文件、构建数据管道,还是向用户提供电子表格下载, IronXL都为您提供适用于每种格式的统一 API。

如何设置C#电子表格库?

通过NuGet安装IronXL只需不到一分钟。 在 Visual Studio 中打开程序包管理器控制台并运行以下命令,或者从任何终端使用.NET CLI:

PM > Install-Package IronXL.Excel

安装软件包后,将命名空间添加到任何需要处理电子表格数据的文件:

using IronXL;

IronXL 的目标框架为.NET Framework 4.6.2+和所有现代.NET版本(Core、5、6、7、8、9 和 10)。 它可在 Windows、Linux 和 macOS 上运行,因此既适用于桌面工具,也适用于容器化服务器工作负载。 请访问IronXL安装指南,获取有关软件包来源和许可证激活的分步说明。

如何在C#中读取CSV文件?

使用IronXL读取 CSV 文件与加载任何电子表格遵循相同的模式。 调用WorkBook.Load,文件路径由IronXL从扩展名推断格式——无需额外配置:

// Load a CSV file into a WorkBook
WorkBook workBook = WorkBook.Load("sales_data.csv");

// Access the default worksheet
WorkSheet workSheet = workBook.DefaultWorkSheet;

// Read individual cells by Excel-style address
string customerName = workSheet["A2"].StringValue;
decimal orderAmount = workSheet["B2"].DecimalValue;

// Iterate rows, starting at index 1 to skip the header
for (int i = 1; i < workSheet.Rows.Count(); i++)
{
    var row = workSheet.Rows[i];
    Console.WriteLine($"Customer: {row.Columns[0].Value}, Amount: {row.Columns[1].Value}");
}

WorkBook对象公开完整的电子表格模型。 可以用类似DateTimeValue——处理类型强制转换,因此无需手动解析字符串。

有哪些小区寻址选项?

除了单单元格访问外, IronXL还支持范围表示法和行/列迭代。 可以使用类似workSheet["A2:C10"]的范围表达式来处理矩形块的单元格,并将其作为平集合进行迭代。 当您想要验证或转换已知数据块而无需编写嵌套循环时,这非常有用:

// Access a range and print each value
foreach (var cell in workSheet["A2:C10"])
{
    Console.WriteLine($"{cell.AddressString}: {cell.Value}");
}

对于动态行数,workSheet.Rows集合会自动反映加载的数据,因此无需硬编码行数。 请参阅C# 读取 CSV 教程,了解更多模式,包括标题检测和多编码文件。

如何将 CSV 行映射到自定义对象?

常见的需求是将表格形式的 CSV 数据转换为类型化的集合。 您可以遍历每一行,并将每一行投影到普通的 C# 类中:

public record SalesRecord(string Customer, decimal Amount, DateTime OrderDate);

WorkBook workBook = WorkBook.Load("sales_data.csv");
WorkSheet workSheet = workBook.DefaultWorkSheet;

var records = new List<SalesRecord>();

// Start at row 1 to skip the header row (row 0)
for (int i = 1; i < workSheet.Rows.Count(); i++)
{
    var row = workSheet.Rows[i];
    records.Add(new SalesRecord(
        Customer: row.Columns[0].StringValue,
        Amount: row.Columns[1].DecimalValue,
        OrderDate: row.Columns[2].DateTimeValue
    ));
}

这种方法将解析逻辑与业务逻辑清晰地分离,并使应用程序其余部分中的每个记录都具有强类型。

如何使用C# CSV库读取和写入文件:图1 - 读取CSV文件输出

如何在C#中写CSV文件?

从头创建CSV文件分为三个步骤:创建SaveAsCsv。 该过程与构建任何电子表格的方式类似,从而保证了 AP​​I 的一致性,而与输出格式无关:

// Create a new workbook and worksheet
WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("inventory");

// Write header row
workSheet["A1"].Value = "Product";
workSheet["B1"].Value = "Quantity";
workSheet["C1"].Value = "Price";

// Write data rows
workSheet["A2"].Value = "Widget A";
workSheet["B2"].Value = 250;
workSheet["C2"].Value = 9.99;

workSheet["A3"].Value = "Gadget B";
workSheet["B3"].Value = 120;
workSheet["C3"].Value = 24.50;

// Export to CSV
workBook.SaveAsCsv("inventory.csv");

SaveAsCsv处理分隔符放置、包含逗号的字段加引号以及换行符标准化。 您无需手动管理任何这些事项。 IronXL在导出过程中保留数值类型,以便 Excel 或 pandas 等下游工具将数字读取为数字,而不是读取为带引号的文本字符串。

如何将数据表导出为 CSV 文件?

许多应用程序从数据库中检索数据到DataTable。 IronXL可以通过一次调用将整个DataTable插入工作表,从而简化批量导出:

DataTable dataTable = GetProductsFromDatabase();

WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("products");

workSheet.InsertDataTable(dataTable, "A1");

workBook.SaveAsCsv("products.csv");

DataTable模式写入列标题,并从您提供的地址开始填充所有行。 对于较大的数据集,这种方法比手动遍历行要高效得多。 查看导出为 CSV 的文档,了解包括自定义分隔符和编码设置在内的选项。

如何使用C# CSV库读取和写入文件:图2 - 使用IronXL新创建的CSV文件

如何在C#中在CSV和Excel之间转换?

IronXL最有价值的功能之一是 CSV 和 Excel 格式之间的双向转换。 API是对称的——Load可以读取任何支持的格式,而Save方法族则可以写入您的目标格式:

// Convert CSV to Excel
WorkBook csvWorkBook = WorkBook.Load("data.csv");
csvWorkBook.SaveAs("data.xlsx");

// Convert Excel back to CSV
WorkBook xlsxWorkBook = WorkBook.Load("report.xlsx");
xlsxWorkBook.SaveAsCsv("report.csv");

这些转换操作可以保持数据的完整性。 数值保持数值形式,日期字段保持其类型,公式结果在写入之前会计算出其计算值。 当您将多工作表 Excel 文件转换为 CSV 时, IronXL会自动为每个工作表创建一个单独的 CSV 文件:

WorkBook multiSheetWorkBook = WorkBook.Load("quarterly_report.xlsx");

// Produces: quarterly_report.Sheet1.csv, quarterly_report.Sheet2.csv, etc.
multiSheetWorkBook.SaveAsCsv("quarterly_report.csv");

这种行为对于下游用户期望每个文件对应一个主题的报告管道尤其有用。CSV写入教程还介绍了其他选项,例如指定分隔符以及控制导出中包含哪些工作表。

如何使用C# CSV库读取和写入文件:图3 - 多页Excel文件保存为单独的CSV文件

如何使用C# CSV库读取和写入文件:图4 - 原始Excel格式文件与转换后的CSV文件

第一步:
arrow pointer

为什么仅支持 CSV 格式的库无法满足实际项目的需求?

许多C#开发者从CsvHelperMicrosoft.VisualBasic中的TextFieldParser开始。 两者都是适用于仅处理 CSV 文件的工作流程的有效工具。 当需求扩大时,差距就会显现:利益相关者要求下载 Excel 文件而不是 CSV 文件,财务部门需要保留公式,或者安全策略要求对文件进行密码保护。 这时,仅支持 CSV 的库会迫使你添加第二个依赖项并维护两条独立的集成路径。 统一的电子表格库从一开始就消除了这种分裂。

IronXL与仅支持 CSV 格式的库之间的功能比较
能力IronXLCsvHelperTextFieldParser
阅读 CSV 文件
写入 CSV 文件
读取/写入 XLSX 文件
公式评估
单元格样式和格式
受密码保护的文件
需要依赖办公室
跨平台(.NET 10)数量有限

统一库还提供哪些额外的电子表格功能?

除了格式转换之外,能够同时处理 CSV 和 Excel 的库还能提供电子表格操作,随着项目的增长,这些操作将变得非常有用。 使用IronXL ,您将获得:

  • 公式计算——您可以将类似=SUM(B2:B10)的公式写入单元格,并在没有Excel的情况下读取计算结果。
  • 单元格和范围样式——通过IronXL样式API应用字体粗细、背景颜色、数字格式和边框。
  • 密码保护——通过WorkBook.Load("secure.xlsx", "password")打开加密的工作簿,并使用加密保存新文件。 -命名区域-- 像在 Excel 中一样定义和引用命名区域,从而简化公式编写和数据验证。 -大文件支持-- IronXL在托管代码中处理数据,无需一次性将整个文件加载到内存中,即使对于包含数万行的文件,也能保持内存使用量的可预测性。

IronXL功能页面列出了所有支持的操作。

IronXL如何处理跨平台部署?

电子表格库经常面临的一个挑战是平台特定的行为。 依赖 COM 互操作的库只能在 Windows 上运行,而调用 Office 的库需要安装 Office。 IronXL是完全托管的代码,没有任何原生依赖项,因此同一个二进制文件无需更改即可在 Linux 容器、macOS 开发机器和 Windows 服务器上运行。 这使得部署到Azure、AWS、Docker或任何.NET 10目标变得简单。

对于使用DapperEntity Framework Core等工具构建数据管道的开发人员来说, IronXL非常适合作为序列化层——读取 CSV 输入,使用 ORM 进行处理,并将结果导出为 XLSX 或 CSV 文件。IronXL 的许可页面详细说明了可用于商业用途的许可级别。

如何使用C# CSV库读取和写入文件:图5 - IronXL与csv-only库比较表

下一步计划是什么?

IronXL为您提供一个统一的 API,用于在任何.NET 10 应用程序中读取、写入和转换 CSV 和 Excel 文件。 主要优势显而易见:不依赖 Office,支持跨平台,单元格值支持强类型,并且当需求发生变化时,可以直接从仅支持 CSV 的项目过渡到完整的电子表格功能。

当你准备深入研究时,从与你当前项目最相关的主题开始。 如果您主要处理 CSV 导入管道,那么上面介绍的读取和映射模式可以处理大多数实际场景。 如果您的输出要求有所不同——有时是下游脚本所需的 CSV 文件,有时是最终用户所需的 XLSX 文件——格式转换部分展示了如何使用单个代码库来同时满足这两种需求。

对于构建报告系统或从数据库导出结果的团队,InsertDataTable方法具有良好的扩展性,并避免逐行单元格赋值的性能开销。 结合单元格样式,即可生成用户无需重新格式化即可在 Excel 中直接打开的报告。

要继续进行,请按照以下步骤操作:

  1. 通过NuGet使用dotnet add package IronXL安装库。 2.按照IronXL入门指南中的快速入门步骤加载您的第一个 CSV 文件。
  2. 当您需要在同一个项目中同时使用 CSV 和 Excel 格式时,请探索 CSV 到 Excel 格式转换教程
  3. 查看IronXL对象参考中的**API 参考,**了解高级单元格操作、公式支持和样式设置。
  4. IronXL试用许可证页面开始免费试用——无需信用卡,包含技术支持。

如果您在与其他Iron Software工具一起评估选项,Iron Software产品套件涵盖了PDF生成IronPDF,条形码读取,OCR等——所有这些共享相同的许可模式和支持渠道。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

...
阅读更多

相关文章

Key in blue circle

立即获取免费的 30 天试用版密钥

Your trial license will be sent to your email address

无任何限制。100% 解锁。无需信用卡。

bullet_checked无需信用卡或创建账户无任何限制。100% 解锁。无需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
预约您的免费现场演示
Booking Badge

深受全球数百万工程师信赖

Iron Software 的客户徽标
获取您的无义务咨询
填写下面的表格或通过sales@ironsoftware.com
您的资料将始终保密。
深受全球数百万工程师信赖
Iron Software 的客户徽标
立即获取您的免费30 天试用密钥
无需信用卡或创建账户