
CSV(逗号分隔值)作为轻量级数据交换格式,广泛应用于财务报表、用户数据、分析结果等场景。在.NET 开发中,高效处理和解析 CSV 文件是一项基础且重要的技能。本文将介绍如何借助Spire.XLS for .NET 通过 C# 读取 CSV 文件,包括直接读取和将 CSV 转换为 DataTable 两种方式。
Spire.XLS for .NET试用下载,请联系E-iceblue官方授权代理商慧都科技
欢迎加入Spire技术交流Q群(125237868),与更多小伙伴一起提升文档开发技能~
安装 Spire.XLS 库
Spire.XLS for .NET 不仅是专业的 Excel 处理工具,还对 CSV 文件提供了完善支持,无需依赖 Microsoft Office,处理效率高且跨平台兼容。
安装步骤:
- 打开 Visual Studio 项目,在解决方案资源管理器中右键点击项目;
- 选择「管理 NuGet 包」,搜索「Spire.XLS」;
- 点击「安装」完成依赖添加。
或通过程序包管理器控制台执行命令:
PM> Install-Package Spire.XLS
C# 读取 CSV 文件内容
以下 C# 代码示例演示如何加载 CSV 文件、访问其中数据,并以表格格式将内容输出到控制台。
using Spire.Xls; namespace ReadCSV { class Program { static void Main(string[] args) { // 创建 Workbook 实例 Workbook workbook = new Workbook(); // 加载 CSV 文件 workbook.LoadFromFile("库存表.csv", ","); // 获取第一个工作表 Worksheet sheet = workbook.Worksheets[0]; // 获取已使用的范围 CellRange range = sheet.AllocatedRange; // 遍历行和列 for (int row = 1; row <= range.RowCount; row++) { for (int col = 1; col <= range.ColumnCount; col++) { // 获取单元格值 string cellValue = range[row, col].Value; Console.Write(cellValue + "\t"); } Console.WriteLine(); } Console.ReadLine(); } } }
核心说明:
- Workbook 类:作为 CSV 文件的内存容器,统一处理逻辑。
-
Workbook.LoadFromFile():用于加载 CSV 文件,参数说明如下:
- 文件路径:如”库存表.csv”。
- 分隔符:”,”(逗号 – CSV 的默认分隔符)。
- Worksheet.AllocatedRange:仅获取包含数据的单元格范围。
- CellRange[row, col].Value:用于获取特定单元格的值。
运行效果:CSV 数据将以清晰的制表符分隔格式输出到控制台。
若需要通过 VB.NET 读取 CSV 文件,可使用 C# 到 VB.NET转换器 直接转换代码。
C# 读取 CSV 到 DataTable
DataTable 是.NET 中灵活的内存数据结构,便于筛选、排序、绑定 UI 等高级操作。以下代码演示如何将 CSV 直接转换为 DataTable:
using Spire.Xls; using System.Data; namespace ReadCSV { class Program { static void Main(string[] args) { // 创建 Workbook 实例 Workbook workbook = new Workbook(); // 加载 CSV 文件 workbook.LoadFromFile("库存表.csv", ","); // 获取第一个工作表 Worksheet worksheet = workbook.Worksheets[0]; // 将工作表中的数据导出到 DataTable DataTable dataTable = worksheet.ExportDataTable(); // 获取行和列的数量 Console.WriteLine("\n转换完成!DataTable信息:"); Console.WriteLine($"列数:{dataTable.Columns.Count}"); Console.WriteLine($"行数:{dataTable.Rows.Count}"); Console.WriteLine(); // 打印列名 for (int i = 0; i < dataTable.Columns.Count; i++) { Console.Write(dataTable.Columns[i].ColumnName + " | "); } Console.WriteLine(); Console.WriteLine("----------------------------------------------------------"); // 打印行数据 for (int i = 0; i < dataTable.Rows.Count; i++) { for (int j = 0; j < dataTable.Columns.Count; j++) { string value = dataTable.Rows[i][j].ToString(); Console.Write(value + "\t"); } Console.WriteLine(); } } } }
核心说明:
- Worksheet.ExportDataTable():一键完成 CSV 到 DataTable 的转换。
- 元数据与内容访问:可通过 DataTable 的 Columns 和 Rows 属性快速获取元数据与内容。
- 高级操作:转换后的数据支持与数据库、UI 组件(如 DataGridView)直接交互。
运行效果:输出包含列名、数据行及统计信息的结构化结果。
若需分析、计算或格式化数据,您可以通过 C# 将 CSV 转换为 Excel。
两种方法的适用场景
根据实际需求选择合适的方法:
方法 | 适用场景 | 典型用例 |
---|---|---|
直接读取 CSV | 快速验证数据、简单打印输出 | 检查 CSV 文件是否正确加载、预览数据 |
转换为 DataTable | 复杂数据处理、绑定 UI 或数据库 | 筛选行、排序数据或保存到SQL Server |
结论
借助 Spire.XLS for .NET,C# 处理 CSV 文件变得简单高效:直接读取适用于快速验证,转换为 DataTable 则便于高级操作。两种方法均无需依赖 Office,且代码可直接复用(只需修改文件路径)。
常见问题
问题1:为什么选择用 Spire.XLS 读取 CSV 文件?
答:虽然 .NET Framework 提供了内置的 StreamReader 处理 CSV 文件,但 Spire.XLS 的优势在于:
- 无需依赖:不需要安装 Microsoft Excel 或 Office
- 高性能:针对大型 CSV 文件的高效处理进行了优化
- 灵活性:提供多种读取 CSV 数据的方式,可按需选择
- 跨平台:兼容.NET Framework/.NET Core/.NET Standard 等多框架
问题2:如何处理非逗号分隔的文件(如分号或制表符)?
答:只需将 LoadFromFile() 的第二个参数替换为实际分隔符即可:
// 读取制表符分隔的文件 workbook.LoadFromFile("data.txt", "\t"); // 读取分号分隔的文件 workbook.LoadFromFile("data.csv", ";"); // 读取竖线分隔的文件 workbook.LoadFromFile("data.csv", "|");
问题3:能否读取 CSV 中的指定行或列?
答:可以。通过定义范围实现精准读取,例如跳过标题行只取特定列:
// 定义特定范围 int startRow = 2; // 从第2行开始(跳过标题) int endRow = 4; // 在第4行结束 int startCol = 2; // 从第2列开始 int endCol = 6; // 在第6列结束 // 遍历行和列 for (int row = startRow; row <= endRow; row++) { for (int col = startCol; col <= endCol; col++) { // 获取单元格值 string cellValue = worksheet.Range[row, col].Value; Console.Write(cellValue + "\t"); } Console.WriteLine(); }
注意:Spire.XLS 采用 1-based 索引(与Excel一致),因此第一行/列编号为1(而非0)。
Spire.XLS for .NET试用下载,请联系E-iceblue官方授权代理商慧都科技
欢迎加入Spire技术交流Q群(125237868),与更多小伙伴一起提升文档开发技能~