Sylvan.Data.Excel 性能优异的开源.NET Excel数据读取库
Sylvan.Data.Excel是一个开源、免费、跨平台的.NET库,专注于读取和写入Excel数据文件。支持多种文件格式,并提供高效的数据访问和数据绑定功能。该库在.NET生态系统中是读取Excel数据文件的最快且内存分配最低的库之一。
Sylvan.Data.Excel 使用场景
适用于需要从Excel文件中读取数据并进行进一步处理(如数据分析、报告生成等)的应用程序。
适用于需要将数据从数据库或其他数据源导出到Excel文件的应用程序。
支持的文件格式
读取支持:.xlsx, .xlsb, 和 .xls 格式。
写入支持:.xlsx 和 .xlsb 格式。注意,该库仅支持创建新的Excel文件,不支持编辑或追加到现有文件。
核心组件
ExcelDataReader:提供只读、逐行、仅向前的数据访问。它继承自DbDataReader,为访问矩形、表格形数据集提供了一个熟悉的API。它允许通过统一的API访问所有支持的文件格式。
ExcelDataWriter:支持将从DbDataReader获取的数据写入到Excel工作表中,支持.xlsx和.xlsb格式。但请注意,它不支持自定义格式、图表或其他常见功能,仅用于导出原始、平面的数据到Excel。
Sylvan.Data.Excel 项目特性
高效的数据读取:通过GetString、GetInt32、GetDateTime等强类型访问器高效读取数据。
原生Excel数据类型检查:GetExcelDataType方法允许检查单元格的原始Excel数据类型,这可能因行而异。
非矩形数据处理:RowFieldCount可以返回当前行的字段数,这在处理“锯齿状”、非矩形文件时非常有用。
数据绑定:Sylvan.Data库包含一个通用数据绑定器,可以将DbDataReader绑定到对象,从而轻松地将Excel文件读取为一系列强类型对象。
Sylvan.Data.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<MyRecord>())
{
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());
数据写入Excel
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");
Sylvan.Data.Excel GitHub地址
https://github.com/MarkPflug/Sylvan.Data.Excel
更新于:1个月前相关文章
- 基于Dapper的开源Lambda扩展,且支持分库分表自动生成实体之基础
- .NET C# 使用Hook钩子实现全局监听键盘和鼠标
- BotSharp 基于 .NET 平台的开源 AI 聊天机器人框架
- .NET C#连接FTP实现文件上传下载
- .NET C#中的Func、Predicate和Expression用法详解
- 5个高性能 .NET Core 图片处理库推荐
- 小米开源智能家居平台 ha_xiaomi_home 使用示例
- ASP.NET如何将Views文件夹从项目分离
- .NET C# 读取编辑.AVIF图片文件
- .NET C# SkiaSharp读取.AVIF图片文件报错
- .NET开源ORM FreeSql常见问题和解决方法
- 微软于发布了.NET 9 Release Candidate 2 提高整体质量
- 分享5个开源的.NET Excel读写操作库
- ASP.NET 使用Entity Framework (EF) 创建迁移修改SQLite数据库表结构
- 如何从.NET Framework迁移到.NET Core或.NET 6/7?
- 如何优化ASP.NET Core应用的性能?
- 10款.NET开发中推荐的代码分析和质量工具
- .NET9 Blazor有哪些更新?
- 在Docker、Kubernetes环境下部署.NET应用的最佳实践
- .NET 游戏开发框架有哪些?