CSV(逗号分隔值)文件作为一种轻量级的数据交换格式,在数据处理和导入导出场景中广泛应用。虽然 .NET Framework 提供了多种原生处理 CSV 的方式,但使用专门的库可以简化代码并提高开发效率。Free Spire.XLS for .NET 是一个强大的免费库,不仅支持 Excel 文件操作,还能轻松处理 CSV 文件。
文章目录
一、基本 CSV 读取操作
1. 准备 CSV 文件
假设我们有 students.csv 文件,内容如下:
学号,姓名,语文,数学,英语
1001,张三,85,90,88
1002,李四,92,85,90
1003,王五,78,88,85
2. 安装 Free Spire.XLS
- 推荐通过 NuGet 包管理器安装:
Install-Package FreeSpire.XLS
- 或在 Visual Studio 中右键项目 → 管理 NuGet 程序包 → 搜索 FreeSpire.XLS → 安装。
⚠️ 需注意,免费版有篇幅限制,适用于个人或小型项目
3. C# 示例代码:读取整个 CSV 文件
using Spire.Xls;
class Program
{
static void Main(string[] args)
{
// 创建 Workbook 实例
Workbook workbook = new Workbook();
// 加载 CSV 文件
// 参数说明:文件名,分隔符,起始行,起始列
workbook.LoadFromFile("student.csv", ",", 1, 1);
// 获取第一个工作表
Worksheet sheet = workbook.Worksheets[0];
// 获取使用的行数和列数
int rowCount = sheet.LastRow;
int colCount = sheet.LastColumn;
Console.WriteLine($"文件包含 {rowCount} 行,{colCount} 列数据");
Console.WriteLine("==============================");
// 遍历所有数据并输出
for (int row = 1; row <= rowCount; row++)
{
for (int col = 1; col <= colCount; col++)
{
Console.Write(sheet.Range[row, col].Value + "\t");
}
Console.WriteLine();
}
}
}
关键说明: 除逗号外,支持制表符(\t)、分号(;)等分隔符,只需修改 LoadFromFile 方法中的第二个 separator 参数。
CSV 读取结果:

二、进阶 CSV 读取技巧
场景 1:读取为 DataTable
将 CSV 文件完整读取到 DataTable,方便后续数据处理(如筛选、入库、展示)。
using System.Data;
using Spire.Xls;
namespace CsvReadDemo
{
class Program
{
static void Main(string[] args)
{
// 1. 创建Workbook实例(Free Spire.XLS将CSV视为特殊的Excel工作簿)
Workbook workbook = new Workbook();
// 2. 加载CSV文件
workbook.LoadFromFile("student.csv", ",", 1, 1);
// 3. 获取第一个工作表(CSV文件对应一个工作表)
Worksheet worksheet = workbook.Worksheets[0];
// 4. 将工作表数据导出到DataTable
DataTable dataTable = worksheet.ExportDataTable();
// 5. 遍历输出数据(验证读取结果)
Console.WriteLine("CSV文件内容:");
// 输出列名
foreach (DataColumn column in dataTable.Columns)
{
Console.Write(column.ColumnName + "\t");
}
Console.WriteLine();
// 输出行数据
foreach (DataRow row in dataTable.Rows)
{
foreach (var cellValue in row.ItemArray)
{
Console.Write(cellValue.ToString() + "\t");
}
Console.WriteLine();
}
// 释放资源
workbook.Dispose();
}
}
}
代码说明:
- CSV 文件会被解析为 Excel 工作表,通过
ExportDataTable()可直接转为 DataTable,无需手动解析每行每列; - 若 CSV 第一行是列名,
ExportDataTable()默认将第一行作为列名,后续行作为数据行。
Datable 验证结果:

场景 2:读取特定行和列
若只需读取 CSV 的部分数据(如第 5 行、第 3 列,或指定行列范围),可直接通过工作表的 Range[] 属性定位。
using Spire.Xls;
namespace CsvReadDemo
{
class Program
{
static void Main(string[] args)
{
Workbook workbook = new Workbook();
workbook.LoadFromFile("student.csv", ",", 1, 1);
Worksheet worksheet = workbook.Worksheets[0];
// 1. 读取指定单元格(第3行第2列,注意:行/列索引从1开始)
string cellValue = worksheet.Range[3, 2].Text;
Console.WriteLine("第3行第2列的值:" + cellValue);
// 2. 读取指定行(第4行所有数据)
Console.WriteLine("\n第4行所有数据:");
for (int col = 1; col <= worksheet.LastColumn; col++)
{
Console.Write(worksheet.Range[4, col].Text + "\t");
}
// 3. 读取指定列(第1列所有数据)
Console.WriteLine("\n\n第1列所有数据:");
for (int row = 1; row <= worksheet.LastRow; row++)
{
Console.WriteLine(worksheet.Range[row, 1].Text);
}
workbook.Dispose();
}
}
}
控制台输出效果:

Free Spire.XLS for .NET 通过封装好的 API,让 CSV 读取变得简单高效。本文覆盖了基础读取、DataTable转换、指定行列读取等核心场景,满足大部分业务需求。除了读取,Free Spire.XLS 还支持 CSV 文件的写入、格式修改、转为 Excel 等多种操作。
==============================================
相关资源:

5042

被折叠的 条评论
为什么被折叠?



