跳至页脚内容
使用 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",然后单击"安装"。

如何使用 IronXL 在 C# 中读取 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);
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

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

如何在 C# 中使用 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();
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

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

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

如何在 C# 中使用 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();
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

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

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

如何使用 IronXL 在 C# 中读取 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
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

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

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

如何使用 IronXL 在 C# 中读取 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是一个.NET库,通过提供强大的解析、转换和处理CSV数据的功能,简化了CSV文件处理。它可以将CSV数据转换为XML和Excel等其他格式,非常适合商业应用程序。

开发人员在解析CSV文件时可能会遇到哪些挑战?

开发人员可能会遇到处理不同的列分隔符、管理引号字段及执行各种数据类型转换等挑战。

IronXL能否处理CSV文件中的不同列分隔符?

是的,IronXL能够处理具有不同列分隔符的CSV文件,为处理多样化的CSV格式提供了灵活性。

可以使用IronXL将CSV数据转换为Excel吗?

绝对可以,IronXL允许开发人员轻松将CSV数据转换为Excel格式,实现与基于Excel的工作流的无缝集成。

什么使IronXL适合企业级CSV处理?

IronXL提供了一套强大的功能,包括企业就绪的CSV处理,允许高效的数据处理和转换任务,对于大型商业应用至关重要。

IronXL可以将CSV数据转换为XML格式吗?

是的,IronXL可以将CSV数据转换为XML,便于与使用XML格式的系统进行数据交换和集成。

IronXL是否支持CSV文件中的数据类型转换?

IronXL支持多种数据类型转换,确保从CSV文件中提取的数据可以在.NET应用程序中准确转换和利用。

为什么CSV解析被认为复杂?

由于不同的列分隔符、引号字段的存在以及对准确的数据类型转换的需求,CSV解析可能变得复杂,这些都需要仔细处理。

Curtis Chau
技术作家

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

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