C#实现高效读取CSV文件的完整指南

 更新时间:2025年12月07日 09:05:13   作者:Eiceblue  
CSV文件作为一种轻量级的数据交换格式,在数据处理和导入导出场景中广泛应用,下面我们就来看看如何使用Free Spire.XLS for .NET轻松处理 CSV吧

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 等多种操作。

到此这篇关于C#实现高效读取CSV文件的完整指南的文章就介绍到这了,更多相关C#读取CSV内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C#自定义简化cookie类实例

    C#自定义简化cookie类实例

    这篇文章主要介绍了C#自定义简化cookie类,实例分析了C#操作cookie的添加、获取及删除等操作的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • C#遍历操作系统下所有驱动器的方法

    C#遍历操作系统下所有驱动器的方法

    这篇文章主要介绍了C#遍历操作系统下所有驱动器的方法,涉及C#中DriveInfo类GetDrivers方法的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-04-04
  • C#如何将DLL打包到程序中

    C#如何将DLL打包到程序中

    这篇文章主要介绍了C#如何将DLL打包到程序中问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • C#反射内存的处理分析

    C#反射内存的处理分析

    这篇文章主要介绍了C#反射内存的处理,较为详细的分析了反射加载的内存释放问题,具有一定的参考借鉴价值,需要的朋友可以参考下
    2014-12-12
  • C#不登录电脑启动程序

    C#不登录电脑启动程序

    本文主要介绍了创建系统服务;开启服务,启动程序。具有一定的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • C#子类对基类方法的继承、重写与隐藏详解

    C#子类对基类方法的继承、重写与隐藏详解

    这篇文章主要介绍了C#子类对基类方法的继承、重写与隐藏的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用C#具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-07-07
  • C#仿QQ聊天窗口

    C#仿QQ聊天窗口

    这篇文章主要为大家详细介绍了C#仿QQ聊天窗口,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • C#编程简单实现生成PDF文档的方法示例

    C#编程简单实现生成PDF文档的方法示例

    这篇文章主要介绍了C#编程简单实现生成PDF文档的方法,结合实例形式分析了C#生成PDF文档的具体步骤与相关实现技巧,需要的朋友可以参考下
    2017-07-07
  • HashTable、HashSet和Dictionary的区别点总结

    HashTable、HashSet和Dictionary的区别点总结

    在本篇文章里小编给大家整理的是关于HashTable、HashSet和Dictionary的区别点,需要的朋友们可以学习下。
    2020-03-03
  • C#实现在窗体上的统计图效果

    C#实现在窗体上的统计图效果

    这篇文章主要为大家详细介绍了C#实现在窗体上的统计图效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02

最新评论