如何快速读取Excel文件:ExcelDataReader完整使用指南

如何快速读取Excel文件:ExcelDataReader完整使用指南

【免费下载链接】ExcelDataReader Lightweight and fast library written in C# for reading Microsoft Excel files 【免费下载链接】ExcelDataReader 项目地址: https://gitcode.com/gh_mirrors/ex/ExcelDataReader

ExcelDataReader是一款轻量级且高效的C#库,专门用于读取Microsoft Excel文件(包括XLS、XLSX、CSV等多种格式)。本指南将帮助你快速掌握这个强大工具的使用方法,从安装到高级配置,让Excel文件处理变得简单高效!

📋 支持的文件格式与版本

ExcelDataReader支持几乎所有常见的Excel文件格式,无论是古老的Excel 2.0还是最新的Excel 365格式,都能轻松应对:

文件类型容器格式文件格式支持的Excel版本
.xlsxZIPOpenXml2007及以上版本
.xlsbZIP/CFBOpenXml2007及以上版本
.xlsCFBBIFF897-2003、Mac版Excel
.xlsCFBBIFF55.0、95版本
.csv-CSV所有版本

ExcelDataReader支持的文件格式 ExcelDataReader支持多种Excel文件格式,满足不同场景需求

🚀 快速安装步骤

安装ExcelDataReader非常简单,推荐使用NuGet包管理器:

  1. 基础包:提供核心读取功能
Install-Package ExcelDataReader
  1. DataSet扩展包:支持将Excel数据转换为DataSet(会自动安装基础包)
Install-Package ExcelDataReader.DataSet

这两个包兼容net462、netstandard2.0和netstandard2.1,适用于大多数.NET项目。

💻 入门使用示例

下面是一个简单的Excel文件读取示例,只需几行代码即可完成:

using (var stream = File.Open(filePath, FileMode.Open, FileAccess.Read))
{
    // 自动检测文件格式
    using (var reader = ExcelReaderFactory.CreateReader(stream))
    {
        // 方法1:使用AsDataSet()快速获取数据
        var result = reader.AsDataSet();
        
        // 方法2:使用reader手动读取数据
        do
        {
            while (reader.Read())
            {
                // 读取单元格数据,例如:reader.GetDouble(0)
            }
        } while (reader.NextResult());
    }
}

🔍 读取CSV文件

对于CSV文件,只需使用专门的CSV读取器:

using (var reader = ExcelReaderFactory.CreateCsvReader(stream))
{
    // CSV读取逻辑
}

⚙️ 高级配置选项

ExcelDataReader提供了丰富的配置选项,可以根据需求自定义读取行为。以下是一些常用配置:

基本配置示例

var configuration = new ExcelReaderConfiguration()
{
    // 设置编码(当文件缺少编码信息时使用)
    FallbackEncoding = Encoding.GetEncoding(1252),
    // 设置密码(用于加密文件)
    Password = "your_password",
    // CSV分隔符自动检测
    AutodetectSeparators = new char[] { ',', ';', '\t' },
    // 保持流打开状态
    LeaveOpen = false
};

var reader = ExcelReaderFactory.CreateReader(stream, configuration);

DataSet配置示例

如果你需要将Excel数据转换为DataSet,可以使用以下高级配置:

var result = reader.AsDataSet(new ExcelDataSetConfiguration()
{
    ConfigureDataTable = (tableReader) => new ExcelDataTableConfiguration()
    {
        // 使用第一行作为列名
        UseHeaderRow = true,
        // 自定义列名前缀
        EmptyColumnNamePrefix = "Column",
        // 过滤行
        FilterRow = (rowReader) => rowReader.Depth > 0,
        // 过滤列
        FilterColumn = (rowReader, columnIndex) => columnIndex < 10
    }
});

📚 核心API参考

ExcelDataReader的核心功能通过IExcelDataReader接口提供,以下是一些常用方法和属性:

方法/属性描述
Read()读取当前工作表的下一行
NextResult()移动到下一个工作表
ResultsCount获取工作表数量
Name获取当前工作表名称
FieldCount获取当前行的列数
RowCount获取当前工作表的行数
GetValue(int i)获取指定列的单元格值
GetDouble(int i)/GetString(int i)获取指定类型的单元格值

详细API定义可以查看源代码文件:src/ExcelDataReader/IExcelDataReader.cs

💡 实用技巧与注意事项

.NET Core编码问题

在.NET Core或.NET 5+中使用时,可能会遇到编码问题,解决方法是添加System.Text.Encoding.CodePages包并注册编码提供程序:

System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);

格式化单元格值

ExcelDataReader本身不处理格式化,但可以结合ExcelNumberFormat库实现:

string GetFormattedValue(IExcelDataReader reader, int columnIndex, CultureInfo culture)
{
    var value = reader.GetValue(columnIndex);
    var formatString = reader.GetNumberFormatString(columnIndex);
    if (formatString != null)
    {
        var format = new NumberFormat(formatString);
        return format.Format(value, culture);
    }
    return Convert.ToString(value, culture);
}

进度指示

处理大型Excel文件时,可以实现进度指示功能:

FilterRow = (rowReader) => {
    int progress = (int)Math.Ceiling((decimal)rowReader.Depth / rowReader.RowCount * 100);
    // 更新进度条
    return true;
}

🔄 从2.x版本迁移

如果你正在从ExcelDataReader 2.x版本迁移到3.x,需要注意以下变化:

  1. 命名空间从Excel改为ExcelDataReader
  2. 需要单独安装ExcelDataReader.DataSet包才能使用AsDataSet()方法
  3. IsFirstRowAsColumnNames属性已被移除,改用UseHeaderRow配置:
var result = reader.AsDataSet(new ExcelDataSetConfiguration()
{
    ConfigureDataTable = (_) => new ExcelDataTableConfiguration()
    {
        UseHeaderRow = true
    }
});

🎯 总结

ExcelDataReader是一个功能强大且高效的Excel文件读取库,支持多种格式,易于使用且高度可配置。无论你是需要处理简单的Excel文件还是复杂的企业级报表,ExcelDataReader都能满足你的需求。

通过本指南,你已经了解了ExcelDataReader的安装、基本使用、高级配置和实用技巧。现在,你可以开始在自己的项目中使用这个优秀的库来处理Excel文件了!

如果你想深入了解更多细节,可以查看项目源代码或测试用例:src/ExcelDataReader.Tests

【免费下载链接】ExcelDataReader Lightweight and fast library written in C# for reading Microsoft Excel files 【免费下载链接】ExcelDataReader 项目地址: https://gitcode.com/gh_mirrors/ex/ExcelDataReader

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值