当前位置: 首页 > news >正文

国产化Excel处理组件Spire.XLS教程:C# 读取 CSV 文件,从基础读取到 DataTable 转换

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];// 将工作表中的数据导出到 DataTableDataTable 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),与更多小伙伴一起提升文档开发技能~

http://www.wxhsa.cn/company.asp?id=54

相关文章:

  • 常用redis客户端对比
  • 【URP】Shader绘制棋盘格对比内置管线
  • Codeforces Round 1049 (Div. 2)(C-E)
  • 虚拟列表
  • 条码控件Aspose.BarCode教程:使用 C# 构建 Code11 条形码生成器
  • 智能引擎驱动软件工业化革命:Gitee PPM如何重塑企业级开发范式
  • 深入解析Web Components:Shadow DOM实战指南
  • HCIP回顾— BGP基础
  • 你的测试又慢又不可靠-因为你测错了东西
  • 你的错误处理一团糟-是时候修复它了-️
  • 物理焦距、像素焦距、像元与相机内参(fx, fy)的意义与作用
  • 实时通信的头痛-问题不在WebSocket而是你的框架
  • 文件不只是数据-一份稳健的文件处理指南
  • vue+websocket+Stomp组件实现前端长连接
  • java课前问题列表
  • 多字段排序工具类,支持树形
  • 鸿蒙 HAP 包处理全攻略:从解包到签名,So 库加固一步到位
  • 关于vue在PC端,rem对不同屏幕进行适配
  • GreatSQL分页查询优化案例实战
  • 技术面:Java并发(线程同步、死锁、多线程编排)
  • vue3中两对容易搞混的概念
  • LoadRunner 对 WebTours 实现订票的性能分析
  • mac一键关闭chrome自动更新
  • Python游戏开发:使用Pygame库的全面教程
  • 同城黑卡小程序系统介绍
  • 限行提醒小程序介绍
  • 365 快乐农场小程序介绍
  • AP聚类算法实现三维数据点分类
  • 政务预约系统介绍
  • 23Java基础之File