一个.NET开源、性能优异的Excel数据读取库

项目介绍
Sylvan.Data.Excel 是一个开源、免费、跨平台的.NET 库,专注于读取和写入 Excel 数据文件。支持多种文件格式,并提供高效的数据访问和数据绑定功能。

该库在.NET 生态系统中是读取 Excel 数据文件的最快且内存分配最低的库之一。

 

使用场景
适用于需要从 Excel 文件中读取数据并进行进一步处理(如数据分析、报告生成等)的应用程序。
适用于需要将数据从数据库或其他数据源导出到 Excel 文件的应用程序。
支持的文件格式
读取支持:.xlsx, .xlsb, 和 .xls 格式。
写入支持:.xlsx 和 .xlsb 格式。注意,该库仅支持创建新的 Excel 文件,不支持编辑或追加到现有文件。
核心组件
ExcelDataReader:提供只读、逐行、仅向前的数据访问。它继承自 DbDataReader,为访问矩形、表格形数据集提供了一个熟悉的 API。它允许通过统一的 API 访问所有支持的文件格式。
ExcelDataWriter:支持将从 DbDataReader 获取的数据写入到 Excel 工作表中,支持.xlsx 和.xlsb 格式。但请注意,它不支持自定义格式、图表或其他常见功能,仅用于导出原始、平面的数据到 Excel。
项目特性
高效的数据读取:通过 GetString、GetInt32、GetDateTime 等强类型访问器高效读取数据。
原生 Excel 数据类型检查:GetExcelDataType 方法允许检查单元格的原始 Excel 数据类型,这可能因行而异。
非矩形数据处理:RowFieldCount 可以返回当前行的字段数,这在处理“锯齿状”、非矩形文件时非常有用。
数据绑定:Sylvan.Data 库包含一个通用数据绑定器,可以将 DbDataReader 绑定到对象,从而轻松地将 Excel 文件读取为一系列强类型对象。
安装类库
可以通过 NuGet 包管理器安装 Sylvan.Data.Excel 库,使用命令 Install-Package Sylvan.Data.Excel。

读取原始数据


using Sylvan.Data.Excel;

// ExcelDataReader derives from System.Data.DbDataReader
// The Create method can open .xls, .xlsx or .xlsb files.
using ExcelDataReader edr = ExcelDataReader.Create("data.xls");

do 
{
 var sheetName = edr.WorksheetName;
 // enumerate rows in current sheet.
 while(edr.Read())
 {
  // iterate cells in row.
  // can use edr.RowFieldCount when sheet contains jagged, non-rectangular data
  for(int i = 0; i < edr.FieldCount; i++)
  {
   var value = edr.GetString(i);
  }
  // Can use other strongly-typed accessors
  // bool flag = edr.GetBoolean(0);
  // DateTime date = edr.GetDateTime(1);
  // decimal amt = edr.GetDecimal(2);
 }
 // iterates sheets
} while(edr.NextResult());

将 Excel 数据绑定到对象



using Sylvan.Data;
using Sylvan.Data.Excel;

using var edr = ExcelDataReader.Create("data.xlsx");
foreach (MyRecord item in edr.GetRecords())
{
    Console.WriteLine($"{item.Name} {item.Quantity}");
}

class MyRecord
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int? Quantity { get; set; }
    public DateTime Date { get; set; }
}

Excel 数据转换为 CSV


using Sylvan.Data.Excel;
using Sylvan.Data.Csv;

using var edr = ExcelDataReader.Create("data.xlsx");

do 
{
 var sheetName = edr.WorksheetName;
 using CsvDataWriter cdw = CsvDataWriter.Create("data-" + sheetName + ".csv")
 cdw.Write(edr);
} while(edr.NextResult());

数据写入
ExcelDataWriter 类型用于创建 Excel 工作簿并将 DbDataReader 数据写入工作表。


// *critical* to dispose (using) ExcelDataWriter.
using var edw = ExcelDataWriter.Create("data.xlsx");
DbDataReader dr;
dr = GetQueryResults("UserReport");
edw.Write(dr, "UserReport");
dr = GetQueryResults("SecurityAudit");
edw.Write(dr, "SecurityAudit");


开源地址
https://github.com/MarkPflug/Sylvan.Data.Excel

© 版权声明

☆ END ☆
喜欢就点个赞吧
点赞0 分享
图片正在生成中,请稍后...