IRONSOFTWAREHOME
USING IRONXL

C# CSV 文件读取器:使用IronXL解析和处理 CSV 数据

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

CSV(逗号分隔值)文件在商业应用程序中无处不在,从财务报告到客户数据导出,无所不包。 CSV 格式表面上看起来很简单,但在生产代码中解析它时,如果处理带引号的字段、多种分隔符类型、嵌入式换行符以及需要将原始文本转换为强类型的.NET对象,就会很快变得困难。 IronXL是一个.NET库,提供企业级 CSV 处理功能,允许开发人员使用最少的代码将 CSV 数据转换为 Excel、XML 或其他格式。

本指南将引导您了解IronXL如何作为 C# CSV 文件读取器工作,以及如何在.NET 10 应用程序中实现它。 使用免费试用许可证亲自体验IronXL ,并跟随教程了解它是如何处理 CSV 和 Excel 任务的。

如何安装IronXL以读取 CSV 文件?

将IronXL集成到您的项目中只需片刻。 您可以通过 Visual Studio 中的NuGet包管理器安装它,也可以通过命令行使用.NET CLI 或 PowerShell 中的NuGet包管理器控制台进行安装。 两种方法都会安装相同的软件包,并且适用于任何.NET 10 项目类型。

dotnet add package IronXL.Excel

有关安装选项和配置的更多详细信息,请参阅IronXL安装文档

安装完成后,读取第一个 CSV 文件只需要很少的代码。 以下示例使用.NET 10 顶级语句:

using IronXL;

// Load CSV file
WorkBook workbook = WorkBook.LoadCSV("data.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;

// Read a specific cell
string cellValue = sheet["A1"].StringValue;

// Iterate through all rows and cells
foreach (var row in sheet.Rows)
{
    foreach (var cell in row)
    {
        Console.WriteLine(cell.StringValue);
    }
}

WorkBook.LoadCSV方法处理标题识别、创建内部数据结构,并执行内存高效的解析,简化了您的数据管理,从第一行代码开始。

C# CSV 文件读取器教程:使用 IronXL 解析并转换 CSV 数据: 图片 1 - IronXL NuGet 安装

如何读取带有自定义分隔符的CSV文件?

实际的 CSV 文件并不总是使用逗号。 分号、竖线和制表符是常见的替代符号,尤其是在逗号用作小数分隔符的国际数据集中。 IronXL通过其灵活的加载选项处理任何分隔符。

using IronXL;

// Load CSV with semicolon delimiter (common in European data exports)
WorkBook workbook = WorkBook.LoadCSV("european-data.csv",
    fileFormat: ExcelFileFormat.XLSX,
    list分隔符: ";");

// Load tab-separated values (TSV)
WorkBook tsvWorkbook = WorkBook.LoadCSV("export_data.tsv",
    fileFormat: ExcelFileFormat.XLSX,
    list分隔符: "\t");

// Load pipe-delimited file
WorkBook pipeWorkbook = WorkBook.LoadCSV("log_export.csv",
    fileFormat: ExcelFileFormat.XLSX,
    list分隔符: "|");

// Access data normally after loading
WorkSheet sheet = workbook.DefaultWorkSheet;
decimal totalSales = sheet["B2:B10"].Sum();

Console.WriteLine($"Total sales: {totalSales}");

list分隔符参数接受任何字符串,给予您完全控制解析行为的能力。 IronXL 在解析过程中保留列的值和数据类型——数值保持为数字,日期保持为DateTime对象,公式保持其关系。

对于格式不一致的文件,IronXL 的错误处理机制可以管理格式错误的行,而不会导致应用程序崩溃,因此即使个别行存在问题,有效数据也能继续得到处理。

C# CSV 文件读取器教程:使用 IronXL 解析并转换 CSV 数据: 图片 2 - 获取开始示例输出

支持的文件格式和分隔符

IronXL在读取 CSV 文件时支持加载以下分隔符类型:

IronXL 的 LoadCSV 方法支持的常用分隔符类型
分隔符特点常见使用场景
逗号,标准 CSV,美国地区导出
分号;欧洲本地化导出(其中逗号为小数分隔符)
标签页制表符分隔值 (TSV) 数据库导出
管道|日志文件、系统导出
自定义字符串任何专有数据格式,多字符分隔符

如何将CSV数据解析为C#对象?

将 CSV 行转换为强类型对象可以简化数据处理并支持 LINQ 操作。 IronXL通过其蜂窝接入方法使这种映射变得简单。 以下代码演示了如何使用.NET 10 顶级语句将 CSV 文件映射到类型化对象列表:

using IronXL;

// Define a typed model matching your CSV structure
public record Product(string Name, decimal Price, int Stock, DateTime? LastUpdated);

// Load and parse CSV file
WorkBook workbook = WorkBook.LoadCSV("inventory.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;

var products = new List<Product>();

// Start from row 2 to skip the header row
for (int row = 2; row <= sheet.RowCount; row++)
{
    products.Add(new Product(
        Name: sheet[$"A{row}"].StringValue,
        Price: sheet[$"B{row}"].DecimalValue,
        Stock: sheet[$"C{row}"].IntValue,
        LastUpdated: sheet[$"D{row}"].DateTimeValue
    ));
}

// Use LINQ for analysis after loading
var lowStock = products.Where(p => p.Stock < 10).ToList();
var highValue = products.Where(p => p.Price > 100m).OrderByDescending(p => p.Price).ToList();

Console.WriteLine($"Products with low stock: {lowStock.Count}");
Console.WriteLine($"High-value products: {highValue.Count}");

IronXL 的类型值属性 — DateTimeValue—安全处理转换,返回无效数据的默认值而非抛出异常。 这种防御性方法确保应用程序能够处理不完美的数据而不会中断运行。 它与C# 记录类型自然地搭配使用,C# 记录类型是在 C# 9 中引入的,它为映射的 CSV 行提供了一个简洁、不可变的数据模型。

IronXL功能页面提供了可用于读取单元格数据的值访问器类型的完整概述。

C# CSV 文件读取器教程:使用 IronXL 解析并转换 CSV 数据: 图片 3 - 不同分隔符读取输出

如何使用 LINQ 筛选和查询 CSV 数据?

一旦 CSV 数据加载到WorkSheet,您可以使用范围选择器进行操作或将其转换为用于 LINQ 查询的对象。 对于简单的列操作,基于范围的访问是最直接的方法:

using IronXL;

WorkBook workbook = WorkBook.LoadCSV("sales-data.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;

// Read entire columns using range notation
var productNames = sheet["A2:A100"]
    .Select(cell => cell.StringValue)
    .Where(name => !string.IsNullOrEmpty(name))
    .ToList();

// Aggregate numeric columns directly
decimal totalRevenue = sheet["C2:C100"].Sum();
decimal averageOrder = sheet["C2:C100"].Avg();

Console.WriteLine($"Products loaded: {productNames.Count}");
Console.WriteLine($"Total revenue: {totalRevenue:C}");
Console.WriteLine($"Average order value: {averageOrder:C}");

这种基于范围的方法避免了对简单聚合进行逐行迭代,从而提高了处理较大文件的性能。 有关支持的范围操作的完整列表,请参阅IronXL文档

如何在C#中将CSV转换为Excel格式?

许多业务流程需要将 CSV 数据转换为 Excel 格式,以便进行高级分析、格式化或分发。 IronXL使这种转换变得简单,同时还能保持所有数据的完整性。

using IronXL;

// Load CSV file
WorkBook csvWorkbook = WorkBook.LoadCSV("monthly-report.csv");
WorkSheet sheet = csvWorkbook.DefaultWorkSheet;

// Apply formatting before saving
sheet["A1:D1"].Style.Font.Bold = true;
sheet["A1:D1"].Style.BackgroundColor = "#4472C4";
sheet["A1:D1"].Style.Font.Color = "#FFFFFF";

// Apply currency format to price column
sheet["B2:B1000"].FormatString = "$#,##0.00";

// Apply date format to date column
sheet["D2:D1000"].FormatString = "yyyy-MM-dd";

// Save as Excel with a single method call
csvWorkbook.SaveAs("monthly-report.xlsx");

Console.WriteLine("Conversion complete: monthly-report.xlsx");

转换过程中保留了数值精度、日期格式和特殊字符,而这些内容通常会在手动转换方法中造成问题。 IronXL 会自动优化生成的 Excel 文件结构,创建高效的文件,即使包含大型数据集也能快速打开。

为了更好地控制输出格式,导出操作指南涵盖了 XLSX、XLS、CSV 和 PDF 导出等选项。 您还可以学习如何编写 Excel 文件以及如何从头开始创建 Excel 文件

C# CSV 文件读取器教程:使用 IronXL 解析并转换 CSV 数据: 图片 4 - 解析 CSV 数据输出

将 CSV 转换为数据库操作所需的数据集

当您需要将 CSV 数据加载到DataSet进行进一步处理或数据库插入时,IronXL 提供直接的转换支持。 《 Excel转数据集指南》对此有详细解释:

using IronXL;
using System.Data;

WorkBook workbook = WorkBook.LoadCSV("customer-export.csv");

// Convert entire workbook to DataSet
DataSet dataSet = workbook.ToDataSet();

// The first sheet becomes the first Data标签页le
DataTable customerTable = dataSet.Tables[0];

Console.WriteLine($"Rows loaded: {customerTable.Rows.Count}");
Console.WriteLine($"Columns: {customerTable.Columns.Count}");

// Process with standard ADO.NET
foreach (DataRow row in customerTable.Rows)
{
    string name = row["Name"]?.ToString() ?? string.Empty;
    string email = row["Email"]?.ToString() ?? string.Empty;
    Console.WriteLine($"Customer: {name} <{email}>");
}
C#

这种方法可以直接与.NET工作流集成,并且在通过标准数据适配器将 CSV 数据推送到 SQL Server、SQLite 或其他关系数据库时非常有用。 因为Data标签页le是核心 .NET 类型,此路径无需 IronXL 之外的额外依赖。

如何处理大型 CSV 文件并进行性能优化?

处理大型 CSV 文件(数万行或更多)需要注意数据的访问方式和内存管理方式。 IronXL包含有助于处理大文件场景的功能。

利用范围运算提升性能

为了获得处理大型数据集的最佳性能,请使用范围操作而不是逐个访问单个单元格。IronXL 的内部引擎可以更高效地处理范围操作:

using IronXL;

WorkBook workbook = WorkBook.LoadCSV("large-dataset.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;

int rowCount = sheet.RowCount;
int colCount = sheet.ColumnCount;

Console.WriteLine($"Dataset dimensions: {rowCount} rows x {colCount} columns");

// Efficient: read entire range at once
var allData = sheet[$"A1:{GetColumnLetter(colCount)}{rowCount}"]
    .Select(cell => cell.StringValue)
    .ToList();

// Efficient: aggregate a column without row-by-row iteration
decimal columnSum = sheet[$"B2:B{rowCount}"].Sum();

Console.WriteLine($"Column B total: {columnSum}");

static string GetColumnLetter(int col)
{
    string result = string.Empty;
    while (col > 0)
    {
        col--;
        result = (char)('A' + col % 26) + result;
        col /= 26;
    }
    return result;
}

IronXL在加载 CSV 文件时会自动处理文本编码变体( UTF-8、UTF-16、ASCII ),确保列值中的国际字符无需额外配置即可正确显示。 对于从 UTF-8 BOM 或其他编码常见的地区系统导出的文件而言,这一点尤为重要。

针对不受信任的 CSV 源的错误处理

在处理来自不可信或不稳定来源的 CSV 文件时,将操作包装在 try-catch 块中可以提供额外的安全保障:

using IronXL;

string filePath = "user-uploaded-data.csv";

try
{
    WorkBook workbook = WorkBook.LoadCSV(filePath);
    WorkSheet sheet = workbook.DefaultWorkSheet;

    Console.WriteLine($"Loaded {sheet.RowCount} rows from {filePath}");

    for (int row = 2; row <= sheet.RowCount; row++)
    {
        string value = sheet[$"A{row}"].StringValue;
        if (!string.IsNullOrWhiteSpace(value))
        {
            Console.WriteLine(value);
        }
    }
}
catch (IronXL.Exceptions.IronXLException ex)
{
    Console.WriteLine($"IronXL error reading {filePath}: {ex.Message}");
}
catch (IOException ex)
{
    Console.WriteLine($"File access error: {ex.Message}");
}

IronXL操作指南涵盖了各种来源的数据导入模式,包括文件、流和字节数组。

C# CSV 文件读取器教程:使用 IronXL 解析并转换 CSV 数据: 图片 5 - 将 CSV 转换为 Excel 格式

跨平台部署

IronXL独立于 Microsoft Office 运行,因此适用于服务器环境和云部署。 无论部署到 Windows、Linux、macOS、Docker 容器,还是 Azure 或 AWS 上的云函数, IronXL都能在所有平台上提供一致的结果,无需进行配置更改。

这种跨平台能力对于微服务架构来说非常有价值,因为在微服务架构中,轻量级容器负责处理数据处理任务。 IronXL功能概述详细介绍了支持的环境和运行时目标的完整列表。

如何获得IronXL的许可证?

IronXL在生产环境中使用需要许可证密钥。 我们提供免费试用许可证供您评估,并为个人开发者、团队和组织提供商业许可证。

在调用任何IronXL函数之前,请先在应用程序中应用许可证密钥:

using IronXL;

// Apply license key at application startup
IronXL.License.LicenseKey = "YOUR-LICENSE-KEY-HERE";

// Verify the license is active
if (IronXL.License.IsValidLicense("YOUR-LICENSE-KEY-HERE"))
{
    Console.WriteLine("IronXL license is active.");
}

// Now use IronXL normally
WorkBook workbook = WorkBook.LoadCSV("data.csv");
WorkSheet sheet = workbook.DefaultWorkSheet;
Console.WriteLine($"Loaded {sheet.RowCount} rows.");

有关试用和许可选项,请访问IronXL许可页面

为什么IronXL是 CSV 处理的理想选择?

IronXL将 C# CSV 文件读取从繁琐的解析任务变成了简单的操作。 该库可以处理手动解析出错的常见极端情况——嵌入式逗号、带引号的字段中的换行符、不一致的分隔符、编码变化和格式错误的行——而无需针对每种情况编写自定义代码。 无论您需要快速的一次性数据导入,还是每天处理数千个文件的生产管道,同一个 API 都适用于这两种情况。

使用StreamReader手动解析 CSV 时,当引号字段包含分隔符字符或字段值中出现换行符时,会迅速失效。 IronXL默认情况下会正确处理这些情况,遵循CSV 规范对带引号的字段处理和转义序列进行规范。

IronXL在.NET 10 中处理 CSV 文件时具有以下主要优势:

-无需 Office 依赖:服务器和云部署无需安装 Microsoft Office 或任何 COM 互操作即可运行。

  • 自定义分隔符:通过list分隔符参数支持任何分隔符字符或字符串
  • 类型安全的单元格访问DateTimeValue访问器返回安全默认值,而不是在错误数据上抛出异常 -范围操作:无需逐行迭代即可跨范围聚合和查询数据 -格式转换:在一个工作流程中加载 CSV 文件并另存为 XLSX、XLS、PDF 或其他格式。
  • DataSet 集成:将加载的工作簿转换为DataSet / Data标签页le以用于 ADO.NET 和数据库操作 -跨平台:无需任何更改即可在 Windows、Linux、macOS、Docker 和云环境中运行

IronXL文档单元格格式指南提供了有关格式设置、公式支持和高级工作簿操作的更多详细信息。

准备好自信地处理 CSV 文件了吗? 立即开始免费试用,探索IronXL 的全部功能

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 天试用密钥
无需信用卡或创建账户