跳至页脚内容
使用 IRONXL

如何在.NET Core中使用CSV Reader与IronXL

在 .NET Core 应用程序中处理 CSV 文件操作是数据导入和导出操作的常见需求。 然而,开发人员在尝试解析 CSV 文件内容和高效读取 CSV 时,经常会遇到不同的分隔符、数据类型转换和性能问题等挑战。 虽然有像 CsvHelper 包(由 Josh Close 创建)和 TextFieldParser 这样的库可以用于 CSV 解析,但并非所有库都提供全面的 Excel 互操作性以及强大的异常处理功能。 IronXL 是一款出色的库和经过实战检验的 CSV 解析器解决方案,能够无缝处理 CSV 和 Excel 格式,为大规模批量处理场景提供卓越的性能优化。 本教程演示如何有效地使用 IronXL 作为 .NET core csv 读取器,并提供实用、易于理解的示例,以高效地解析 CSV 数据,包括异步操作以提高应用程序的响应速度。 开发者为开源 CSV 工具贡献改进或提交拉取请求时,也会发现 IronXL 清晰的 API 是一个有价值的参考,尤其是在管理包含重复值、重复条目或在数据导入过程中需要数据验证的数据集时。

在 .NET 生态系统中,有多种软件包可用于处理 CSV 文件操作,包括 EPPlus、NPOI 和 OpenXML 等替代方案,但 IronXL 的多功能性使其成为开发人员的首选,他们希望超越简单的 CSV 读取,并在单个 CSV 库中享受 Excel 互操作性,尤其是在企业应用程序中进行 ETL 操作和生成报表任务时。 当然,选择合适的解析器取决于您的具体需求,我们希望这份全面的指南能够解答您的疑问,并帮助您做出明智的决定。

为什么选择 IronXL 作为您的 Dotnet Core CSV 读取器?

在为应用程序选择 .NET Core CSV 读取器时,IronXL 相比传统的 CSV 解析库具有几个引人注目的优势。 IronXL 可与 .NET Core 的现代架构无缝集成,同时保持与 .NET Framework 项目的向后兼容性。 这款 .NET Core CSV 读取器解决方案消除了开发人员在处理 CSV 文件时遇到的常见痛点,包括:

  • 自动检测国际字符集的编码
  • 无需手动配置即可智能识别分隔符
  • 对从千字节到千兆字节大小的文件进行内存高效处理
  • 内置数据类型推断和转换
  • 跨平台的回车和换行处理 即使处理 CSV 数据,也支持 Excel 公式。
  • 在 Windows、Linux 和 macOS 上的跨平台可靠性

与需要大量配置和手动解析逻辑的基本 CSV 读取器不同,IronXL 可以自动处理特殊情况,例如包含分隔符的带引号的字段、多行单元格值和特殊字符。 该库的架构是一个 .NET Core CSV 读取器,通过延迟加载和流式传输功能确保了最佳性能,使其既适用于小型配置文件,也适用于大规模数据处理任务。 请注意,IronXL 可以根据需要跳过标题行,并高效地拆分复杂的数据结构。

对于从传统系统过渡到新系统的开发人员来说,IronXL 提供了一个熟悉的 API,降低了学习难度,同时为响应式应用程序提供了现代化的 async/await 模式。 这使其成为正在进行数据处理基础架构现代化的团队的理想 .NET Core CSV 读取器选择。

如何快速上手使用 IronXL 读取 CSV 文件?

无论您构建的是控制台应用程序、ASP.NET Core Web 应用程序还是 Windows Forms 应用程序,在 .NET Core 项目中安装 IronXL 都只需几秒钟。 要在 .NET Core 中高效解析 CSV 文件并开始读取 CSV 数据,请在 Visual Studio 中打开程序包管理器控制台并运行:

Install-Package IronXL.Excel

如何在 IronXL 中使用 .NET Core CSV 读取器:图 2 - 安装

或者,使用NuGet包管理器界面通过搜索"IronXL.Excel"并点击安装来安装。 在迁移到 .NET Core 的过程中,此 CSV 文件读取器可以与现有的 .NET Framework 项目无缝集成。 您还可以通过.NET CLI使用命令参数安装,或直接从GitHub引用。

如何在 IronXL 中使用 .NET Core CSV 读取器:图 3 - IronXL 安装

安装完成后,将命名空间添加到您的代码中:

using IronXL;
using IronXL;
Imports IronXL
$vbLabelText   $csharpLabel

这个简单的 CSV 库设置让您无需 Microsoft Office 或 Interop 依赖项即可访问强大的 CSV 读取功能,使其成为云部署和 Docker 容器的理想选择。 有关详细的安装说明和配置设置,请查看IronXL 安装指南文档。

如何在 IronXL 中使用 .NET Core CSV 读取器:图 4 - 跨平台

如何使用 IronXL 的 LoadCSV 方法读取 CSV 文件?

IronXL 的 LoadCSV 方法使 CSV 文件处理变得简单,它可以高效地处理 CSV 标题、CSV 列和 CSV 行,如下例所示:

// Load CSV file into a WorkBook object for .NET Core CSV reading
var reader = WorkBook.LoadCSV("Budget.csv", 
    fileFormat: ExcelFileFormat.XLSX, 
    listDelimiter: ",");
// Access the default worksheet containing parsed CSV data
WorkSheet worksheet = reader.DefaultWorkSheet;
// Read specific cell values with type-safe methods
string cellValue = worksheet["A1"].StringValue;
// Iterate through a range for bulk CSV data processing
foreach (var cell in worksheet["A1:C10"])
{
    Console.WriteLine($"Cell {cell.AddressString}: {cell.Text}");
}
// Load CSV file into a WorkBook object for .NET Core CSV reading
var reader = WorkBook.LoadCSV("Budget.csv", 
    fileFormat: ExcelFileFormat.XLSX, 
    listDelimiter: ",");
// Access the default worksheet containing parsed CSV data
WorkSheet worksheet = reader.DefaultWorkSheet;
// Read specific cell values with type-safe methods
string cellValue = worksheet["A1"].StringValue;
// Iterate through a range for bulk CSV data processing
foreach (var cell in worksheet["A1:C10"])
{
    Console.WriteLine($"Cell {cell.AddressString}: {cell.Text}");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

LoadCSV 方法创建一个 WorkBook 对象,该对象使用优化的内存流处理在内存中表示您的 CSV 数据结构。 fileFormat 参数指定处理的内部格式,而 listDelimiter 定义 CSV 文件中使用的 CSV 分隔符,支持制表符分隔的文件和管道符分隔的格式。

输入

如何在 IronXL 中使用 .NET Core CSV 读取器:图 5 - CSV 输入示例

输出

如何在 IronXL 中使用 .NET Core CSV 读取器:图 6 - 控制台输出

当处理从包含 sep= 行(有时称为"分隔符"标记)的系统导出的 CSV 文件时,IronXL 会智能地读取此元数据,以自动确定正确的分隔符检测。 此功能可节省处理区域 CSV 格式的时间,这些格式可能使用分号、制表符或竖线而不是逗号,从而确保正确的编码检测和字符编码处理。

默认的 WorkSheet 属性可立即以工作表的形式访问已解析的 CSV 数据,从而实现逐单元格或基于范围的数据提取。 您可以使用 StringValue、IntValue 或 DecimalValue 等属性检索值,以实现具有内置类型转换的类型安全操作。 对于更复杂的数据操作和数据转换,请探索 IronXL 的单元格格式化选项和范围选择功能。

如何在 IronXL 中使用 .NET Core CSV 读取器:图 7 - 功能

将 CSV 数据映射到 C# 类并进行数据验证

您还可以使用字段映射和数据验证功能,将 CSV 数据直接映射到 C# 对象。 例如,假设你有一个 CSV 文件,其中包含姓名、年龄和城市三列。 你可以像这样定义一个带有属性映射的模型:

public class Customer
{
    public string Name { get; set; }
    public int Age { get; set; }
    public string City { get; set; } // Example of using public string city
    // Add validation attributes for data integrity
    public bool IsValid()
    {
        return !string.IsNullOrEmpty(Name) && Age > 0;
    }
}
// Create new list for storing records
public List<Customer> customers = new List<Customer>();
// Parse CSV rows into objects
for (int row = 2; row <= worksheet.RowCount; row++)
{
    var customer = new Customer
    {
        Name = worksheet[$"A{row}"].StringValue,
        Age = worksheet[$"B{row}"].IntValue,
        City = worksheet[$"C{row}"].StringValue
    };
    if (customer.IsValid())
        customers.Add(customer);
}
// Output the records
foreach (var record in customers)
{
    Console.WriteLine($"Customer: {record.Name}");
}
public class Customer
{
    public string Name { get; set; }
    public int Age { get; set; }
    public string City { get; set; } // Example of using public string city
    // Add validation attributes for data integrity
    public bool IsValid()
    {
        return !string.IsNullOrEmpty(Name) && Age > 0;
    }
}
// Create new list for storing records
public List<Customer> customers = new List<Customer>();
// Parse CSV rows into objects
for (int row = 2; row <= worksheet.RowCount; row++)
{
    var customer = new Customer
    {
        Name = worksheet[$"A{row}"].StringValue,
        Age = worksheet[$"B{row}"].IntValue,
        City = worksheet[$"C{row}"].StringValue
    };
    if (customer.IsValid())
        customers.Add(customer);
}
// Output the records
foreach (var record in customers)
{
    Console.WriteLine($"Customer: {record.Name}");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

这里,字段 public string city 代表 CSV 文件中的"城市"列。使用 IronXL,您可以轻松地将工作表中的每一行映射到 Customer 对象,以便进行数据处理、序列化为 JSON、反序列化或导出为其他格式,并进行适当的异常处理。 这种方法允许用户从他们的 CSV 数据创建强类型记录。

如何处理不同的分隔符并将其转换为数据表?

现实世界中的 CSV 文件格式通常使用逗号以外的各种分隔符,因此需要灵活的 CSV 分隔符处理。 IronXL 通过自动分隔符检测巧妙地处理了这个问题:

// Load CSV with semicolon delimiter
WorkBook workbook = WorkBook.LoadCSV("products.csv", 
    fileFormat: ExcelFileFormat.XLSX, 
    listDelimiter: ";");
WorkSheet worksheet = workbook.DefaultWorkSheet;
// Convert to DataTable for database operations
DataTable dataTable = worksheet.ToDataTable(true);
// Process the DataTable
foreach (DataRow row in dataTable.Rows)
{
    Console.WriteLine($"Product: {row["ProductName"]}, Price: {row["Price"]}");
}
// Load CSV with semicolon delimiter
WorkBook workbook = WorkBook.LoadCSV("products.csv", 
    fileFormat: ExcelFileFormat.XLSX, 
    listDelimiter: ";");
WorkSheet worksheet = workbook.DefaultWorkSheet;
// Convert to DataTable for database operations
DataTable dataTable = worksheet.ToDataTable(true);
// Process the DataTable
foreach (DataRow row in dataTable.Rows)
{
    Console.WriteLine($"Product: {row["ProductName"]}, Price: {row["Price"]}");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

ToDataTable 方法将工作表数据转换为 .NET DataTable,布尔参数指示是否使用第一行作为列标题。 这种转换对于数据库操作、ASP.NET Core 应用程序中的数据绑定、GridView 填充,或者当您需要利用现有的 DataTable 处理逻辑进行 SQL Server 集成时,尤其有用。 生成的 DataTable 保留了数据类型和架构信息,可以直接与 SqlBulkCopy 一起使用,以进行高效的批量插入操作。 请参阅我们的详细指南,了解更多关于将 CSV 文件导入 DataTable以及数据库集成的信息

输入

如何在 IronXL 中使用 .NET Core CSV 读取器:图 8 - 以分号分隔的 CSV 输入

输出

如何在 IronXL 中使用 .NET Core CSV 读取器:图 9 - 使用不同分隔符的控制台输出

如何实现CSV和Excel格式之间的转换?

IronXL 的突出特点之一是能够无缝地将 CSV 文件转换为 Excel 文件,以及将 Excel 文件转换为 CSV 文件,这对于数据迁移项目至关重要。 以下示例演示了此功能:

// Load CSV and save as Excel
WorkBook csvWorkbook = WorkBook.LoadCSV("report.csv", 
    fileFormat: ExcelFileFormat.XLSX, 
    listDelimiter: ",");
// Save as Excel file
csvWorkbook.SaveAs("report.xlsx");
// Or load Excel and export to CSV
WorkBook excelWorkbook = WorkBook.Load("data.xlsx");
excelWorkbook.SaveAsCsv("exported_data.csv", delimiter: ",");
// Load CSV and save as Excel
WorkBook csvWorkbook = WorkBook.LoadCSV("report.csv", 
    fileFormat: ExcelFileFormat.XLSX, 
    listDelimiter: ",");
// Save as Excel file
csvWorkbook.SaveAs("report.xlsx");
// Or load Excel and export to CSV
WorkBook excelWorkbook = WorkBook.Load("data.xlsx");
excelWorkbook.SaveAsCsv("exported_data.csv", delimiter: ",");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

这种双向转换既能保持数据完整性,又能为各种文件转换场景提供格式灵活性。 SaveAs 方法会自动从文件扩展名检测所需的格式,支持 XLSX、XLS 和其他 Excel 格式以及工作表管理。 使用 SaveAsCsv 保存为 CSV 时,您可以指定自定义分隔符和文本编码以满足您的要求。 当与需要特定文件格式进行数据交换的系统集成时,此功能非常宝贵。 对于从其他库迁移或评估手动解析替代方案的开发人员,请参阅Stack Overflow 上讨论的 IronXL 与流行的替代方案的比较,以及.NET 社区中的性能考虑因素

IronXL 为企业级 CSV 处理提供了哪些高级功能?

IronXL 提供企业级功能,使其区别于基本的 CSV 解析器,包括全面的单元测试支持和调试工具。 该库提供跨平台兼容性,可在 Windows、Linux、macOS 和 Docker 容器中无缝运行——这对于现代 .NET Core 部署和微服务架构至关重要。 根据微软的文档,跨平台支持对于云原生应用程序和 Azure 部署至关重要。

除了技术能力之外,IronXL 的所有许可证均包含专业支持和定期更新,确保与最新的 .NET 版本和安全补丁兼容。 这种商业支持确保了关键任务应用程序的可靠性,而开源库在生产环境中可能无法满足这些需求。 该库还通过优化的内存管理高效地处理大型数据集,支持公式计算、转换过程中单元格格式保留、多工作表工作簿操作和数据聚合任务等高级场景。

对于需要可扩展性和负载均衡的生产部署,IronXL 的许可模式提供了灵活性,可选择单个项目、团队和企业级使用,所有这些都包括源代码访问权限和免版税再分发权。 部署后,您会发现该库继续提供可靠的性能。 购买许可证即可解锁全部功能,且无水印。

如何在 IronXL 中使用 .NET Core CSV 读取器:图 10 - 许可

结论

IronXL 简化了 .NET Core 应用程序中的 CSV 读取和 CSV 写入操作,同时提供了处理复杂场景的灵活性,包括数据分析、报告和自动化任务。 它直观的 API,结合 Excel 格式支持和企业级功能,使其成为需要可靠的 CSV 处理能力、线程安全性和并发访问支持的开发人员的理想选择。 该库能够无缝地在不同格式之间进行转换,处理各种分隔符,执行数据清理,并与现有的 .NET 数据结构集成,从而显著缩短开发时间,同时确保代码的可维护性。

我们希望这份全面的指南能够为您解决 CSV 文件处理方面的问题提供明确的答案。 准备好简化您的 CSV 文件处理和数据处理流程了吗?立即开始免费试用,体验 IronXL 如何利用变量读取器初始化和公共字符串声明,通过专业级的 CSV 解析功能,彻底改变您的数据处理工作流程。 对于生产环境,请探索包含专业支持、文档和持续更新的 .NET Core 项目许可选项。 请务必检查路径配置并查看我们的类实现示例,以获得最佳效果。

常见问题解答

使用IronXL进行.NET Core中的CSV文件操作的主要优势是什么?

IronXL提供无缝处理CSV和Excel格式,具有大规模批处理的性能优化,非常适合高效的数据导入和导出操作。

IronXL如何处理CSV文件中的不同分隔符?

IronXL被设计为高效处理各种分隔符,确保无论CSV文件中使用何种分隔符都能准确解析数据。

IronXL能管理CSV解析期间的Excel互操作性吗?

是的,IronXL提供全面的Excel互操作性,使其成为需要同时处理CSV和Excel文件格式的开发人员的强大解决方案。

IronXL支持CSV处理的异步操作吗?

IronXL支持异步操作,通过允许在CSV文件解析和处理期间进行非阻塞执行来提高应用程序的响应能力。

为什么开发人员可能会选择IronXL而不是其他CSV解析库?

开发人员可能会选择IronXL是因为其卓越的性能、强大的异常处理能力和清晰的API,特别适合管理复杂的数据集和为开源CSV实用工具做贡献。

IronXL如何确保CSV解析中的性能优化?

IronXL在大规模批处理场景中进行了性能优化,确保高效和快速的数据处理。

开发人员在CSV文件操作中面临哪些挑战是IronXL可以解决的?

IronXL解决了诸如不同的分隔符、数据类型转换和性能问题等挑战,提供了用于高效CSV解析的简单解决方案。

IronXL适合处理包含重复值和重复条目的数据集吗?

是的,IronXL非常适合管理包含重复值和重复条目的数据集,提供数据验证功能以供导入过程中使用。

IronXL与其他库如CsvHelper相比如何?

虽然库如CsvHelper很受欢迎,但IronXL凭借其增强的Excel互操作性、强大的异常处理和CSV和Excel文件的性能优化脱颖而出。

Curtis Chau
技术作家

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

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