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
Install-Package FreeSpire.XLS
- 或在 Visual Studio 中右键项目 → 管理 NuGet 程序包 → 搜索 FreeSpire.XLS → 安装。
⚠️ 需注意,免费版有篇幅限制,适用于个人或小型项目
3. C# 示例代码:读取整个 CSV 文件
using Spire.Xls;
class Program
{
static void Main(string[] args)
{
Workbook workbook = new Workbook();
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)
{
Workbook workbook = new Workbook();
workbook.LoadFromFile("student.csv", ",", 1, 1);
Worksheet worksheet = workbook.Worksheets[0];
DataTable dataTable = worksheet.ExportDataTable();
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];
string cellValue = worksheet.Range[3, 2].Text;
Console.WriteLine("第3行第2列的值:" + cellValue);
Console.WriteLine("\n第4行所有数据:");
for (int col = 1; col <= worksheet.LastColumn; col++)
{
Console.Write(worksheet.Range[4, col].Text + "\t");
}
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 等多种操作。