跳至页脚内容
使用 IRONXL

C# CSV 文件阅读器教程:使用 IronXL 解析和转换 CSV 数据

逗号分隔值 (CSV) 文件在商业应用中无处不在,从财务报告到客户数据导出,无所不包。 虽然 CSV 解析看起来很简单,但当处理用引号(双引号)分隔的不同列以及各种数据类型转换时,CSV 解析很快就会变得复杂。 IronXL是一个功能强大的 .NET 库,提供企业级 CSV 处理功能。 允许开发人员轻松地将 CSV 数据转换为 XML、Excel 或其他格式。

今天,我们将带您了解如何在 C# 中使用 IronXL 作为 C 语言 csv 文件读取器,以及如何在 .NET 应用程序中轻松实现它。 使用免费试用版亲自体验 IronXL,并跟随教程了解它如何提升您的 .NET CSV 和 Excel 任务效率。

为什么选择 IronXL 进行 CSV 读取?

IronXL 将 CSV 文件读取从解析的难题简化为简单的操作。 与手动拆分操作或基本的 StreamReader 新方法不同,IronXL 可以自动处理嵌入逗号、换行符和由不寻常分隔符分隔的列等特殊情况。

该库独立于 Microsoft Office 运行,因此非常适合服务器环境和云部署。 无论部署到Windows、Linux、macOS 、Azure 还是 AWS,IronXL 都能在所有平台上提供一致的结果。 这种跨平台兼容性,再加上其直观的 API,使其成为需要可靠 CSV 解析的现代 C# 应用程序的理想选择。

IronXL 将 CSV 文件与 Excel 格式视为同等重要的文件类型,从而能够在文件类型之间无缝转换,而不会丢失数据或出现格式问题。 除了简单的 CSV 读取之外,IronXL 还能够使用 C# 从头开始写入 CSV 文件。 请务必查看我们的操作指南,了解更多相关信息。 这使其成为满足您所有 CSV 需求的完美库,能够读取和创建 CSV 文件,并将其转换为任何受支持的格式。

入门指南:安装 IronXL

通过 Visual Studio 的 NuGet 包管理器安装 IronXL 只需几分钟。 打开您的项目,在解决方案资源管理器中右键单击"引用",然后选择"管理 NuGet 程序包"。搜索"IronXL.Excel",然后单击"安装"。

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

有关详细的安装指导,请访问IronXL 安装文档

安装完成后,读取第一个 CSV 文件只需要极少的源代码,如下例所示:

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 rows
foreach (var row in sheet.Rows)
{
    foreach (var cell in row)
    {
        Console.WriteLine(cell.StringValue);
    }
}
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 rows
foreach (var row in sheet.Rows)
{
    foreach (var cell in row)
    {
        Console.WriteLine(cell.StringValue);
    }
}
$vbLabelText   $csharpLabel

在这个例子中,var 读取器将 CSV 数据作为字符串数组访问。 WorkBook.LoadCSV方法处理标题标识、创建新数据表并执行内存高效的解析,从而简化您的数据结构管理。

C# CSV 文件读取器教程:使用 IronXL 解析和转换 CSV 数据:图 2 - 入门示例输出

如何读取具有不同分隔符的 CSV 文件中的数据?

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

using IronXL;
// Load CSV with semicolon delimiter
WorkBook workbook = WorkBook.LoadCSV("european-data.csv",
    fileFormat: ExcelFileFormat.XLSX,
    listDelimiter: ";");
// Load tab-separated values
WorkBook tsvWorkbook = WorkBook.LoadCSV("export_data.tsv",
    fileFormat: ExcelFileFormat.XLSX,
    listDelimiter: "\t");
// Access data normally
WorkSheet sheet = workbook.DefaultWorkSheet;
decimal totalSales = sheet["B2:B10"].Sum();
using IronXL;
// Load CSV with semicolon delimiter
WorkBook workbook = WorkBook.LoadCSV("european-data.csv",
    fileFormat: ExcelFileFormat.XLSX,
    listDelimiter: ";");
// Load tab-separated values
WorkBook tsvWorkbook = WorkBook.LoadCSV("export_data.tsv",
    fileFormat: ExcelFileFormat.XLSX,
    listDelimiter: "\t");
// Access data normally
WorkSheet sheet = workbook.DefaultWorkSheet;
decimal totalSales = sheet["B2:B10"].Sum();
$vbLabelText   $csharpLabel

listDelimiter 参数接受任何字符串,从而可以完全控制解析行为。 IronXL 在解析过程中保留列值和数据类型。 数值仍然是数字,日期仍然是 DateTime 对象,公式保持其关系不变。 这种自动类型保留功能消除了手动转换代码,减少了错误。

对于格式不一致的文件,IronXL 的错误处理功能可以优雅地处理格式错误的行,而不会崩溃,同时记录问题以供审查,并继续处理有效数据。

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

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

将 CSV 行转换为强类型对象可以简化数据处理并支持 LINQ 操作。 IronXL 通过其蜂窝接入方法使这种映射变得简单。 以下代码展示了如何编写一个简单的 CSV 解析器来处理这种情况:

using IronXL;
public class Product
{
    public string Name { get; set; }
    public decimal Price { get; set; }
    public int Stock { get; set; }
    public DateTime? LastUpdated { get; set; }
}
class Program
{
    static void Main(string[] args)
    {
        // Parse CSV into objects
        var products = new List<Product>();
        WorkBook workbook = WorkBook.LoadCSV("inventory.csv");
        WorkSheet sheet = workbook.DefaultWorkSheet;
        // Skip first line (header), parse remaining lines
        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
        var lowStock = products.Where(p => p.Stock < 10).ToList();
    }
}
using IronXL;
public class Product
{
    public string Name { get; set; }
    public decimal Price { get; set; }
    public int Stock { get; set; }
    public DateTime? LastUpdated { get; set; }
}
class Program
{
    static void Main(string[] args)
    {
        // Parse CSV into objects
        var products = new List<Product>();
        WorkBook workbook = WorkBook.LoadCSV("inventory.csv");
        WorkSheet sheet = workbook.DefaultWorkSheet;
        // Skip first line (header), parse remaining lines
        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
        var lowStock = products.Where(p => p.Stock < 10).ToList();
    }
}
$vbLabelText   $csharpLabel

IronXL 的类型化值属性(StringValue、DecimalValue、IntValue、DateTimeValue)能够安全地处理转换,对于无效数据返回默认值,而不是抛出异常。 这样就避免了繁琐的手动工作,例如在解析后为每个属性创建一个新字符串。 这种防御性方法确保了应用程序的稳健性,使其能够优雅地处理不完美的数据。

该库还支持可空类型和自定义解析逻辑(如有需要),从而可以在不牺牲简洁性的前提下适应复杂的业务规则。

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

如何将CSV文件转换为Excel格式?

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

// Load CSV file
WorkBook csvWorkbook = WorkBook.LoadCSV("monthly-report.csv");
// Save as Excel with single method call
csvWorkbook.SaveAs("monthly-report.xlsx");
// Add formatting before saving
WorkSheet sheet = csvWorkbook.DefaultWorkSheet;
sheet["A1:D1"].Style.Font.Bold = true;
sheet["B:B"].FormatString = "$#,##0.00";  // Currency format
// Load CSV file
WorkBook csvWorkbook = WorkBook.LoadCSV("monthly-report.csv");
// Save as Excel with single method call
csvWorkbook.SaveAs("monthly-report.xlsx");
// Add formatting before saving
WorkSheet sheet = csvWorkbook.DefaultWorkSheet;
sheet["A1:D1"].Style.Font.Bold = true;
sheet["B:B"].FormatString = "$#,##0.00";  // Currency format
$vbLabelText   $csharpLabel

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

这种无缝转换功能实现了自动化报告流程,可以将来自各种来源的 CSV 数据转换为精美的 Excel 报告,供高管审核。

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

最佳实践和高级功能

IronXL 具有多项先进增强功能,可提高 CSV 处理的可靠性。 该库可自动处理各种文本编码( UTF-8、UTF-16、ASCII ),确保国际字符串值和列正确显示。 内存高效的流式处理大型 CSV 文件,无需同时将所有数据加载到 RAM 中。

处理来自不受信任来源的 CSV 文件时,为了增加安全性,请将操作包装在 try-catch (Exception ex) 块中。 有关全面的错误处理策略,请查看IronXL 故障排除指南

为了获得最佳性能,处理大型数据集时,请使用范围操作(sheet["A1:Z1000"]),而不是逐个单元格访问单个数据表行或整个字符串列。 IronXL 的公式引擎也支持 CSV 数据,无需先转换为 Excel 格式即可进行计算。该库的跨平台支持不仅限于基本兼容性。 Docker 容器、Linux 服务器和云函数都可以在不进行任何配置更改的情况下运行 IronXL,使其成为微服务架构的理想选择。

该库的跨平台支持不仅限于基本兼容性。 Docker 容器、Linux 服务器和云函数都可以在不进行任何配置更改的情况下运行 IronXL,使其成为微服务架构的理想选择。

结论

IronXL 将 C# CSV 文件读取从一项繁琐的任务转变为一个可靠的、企业级的解决方案。 其自动 CSV 解析、数据结构管理和无缝 Excel 转换功能使其成为现代 .NET 应用程序中处理 CSV 文件、数据表 dt 或 CSV 数据的开发人员的首选。

准备好简化您的 CSV 处理流程了吗? 立即获取 IronXL ,在您的应用程序中体验企业级数据处理。

常见问题解答

什么是 CSV 文件?为什么它被广泛使用?

CSV 文件,即逗号分隔值文件,是一种用于存储表格数据的简单文本格式。由于其简单易用,它被广泛应用于商业应用中,用于在不同系统之间导出和导入数据。

IronXL 如何帮助 C# 解析 CSV 文件?

IronXL 通过提供强大的工具来处理复杂的 CSV 结构,包括不同的列分隔符、带引号的字段和数据类型转换,从而简化了 C# 中的 CSV 文件解析。

IronXL能否将CSV数据转换为其他格式?

是的,IronXL 允许开发人员将 CSV 数据转换为各种格式,例如 XML 和 Excel,使其能够灵活地满足不同的数据处理需求。

CSV文件解析中常见的挑战有哪些?

常见的挑战包括处理不同的列分隔符、管理带引号的字段以及执行准确的数据类型转换。IronXL 凭借其先进的解析功能,有助于缓解这些问题。

IronXL 是否适用于企业级 CSV 处理?

是的,IronXL 的设计目标是面向企业用户,为 .NET 应用程序提供强大且可扩展的 CSV 文件处理解决方案。

IronXL是否支持高效处理大型CSV文件?

IronXL 针对性能进行了优化,使其能够高效处理大型 CSV 文件,而不会影响速度或准确性。

IronXL 能否处理带有自定义分隔符的 CSV 文件?

是的,IronXL 支持带有自定义分隔符的 CSV 文件,使开发人员在处理非标准 CSV 格式时拥有更大的灵活性。

IronXL如何处理CSV文件中的引号字段?

IronXL 能够准确解析 CSV 文件中的带引号字段,确保读取过程中数据的完整性和正确转换。

IronXL 可以使用哪些编程语言进行 CSV 解析?

IronXL 是一个 .NET 库,因此可以与 .NET 框架支持的语言一起使用,例如 C# 和 VB.NET。

是否有使用 IronXL 处理 CSV 文件的代码示例?

是的,IronXL 文档提供了在 C# 应用程序中读取、解析和处理 CSV 文件的完整代码示例。

Curtis Chau
技术作家

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

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。