Powersheet是一个基于.net standard 2.1开发的跨平台的Excel数据导入、导出类库。配置灵活,使用方便。支持DataTable、List作为数据源。支持侵入和非侵入两种字段映射配置方式。
- 从Excel文件或流提取数据并转换为DataTable或对象集合;
- 将DataTable或对象集合的数据写入到Excel文件;
- 基于.net standard 2.1开发,支持跨平台使用;
- 轻量,不需要安装 Microsoft Office、COM+组件,体积小;
- 提供nuget包,安装方便快捷;
- 使用简单,对象属性和Excel列映射配置灵活,支持侵入式(使用属性Attribute)和非侵入(传入配置参数)两种方式;
- 易于扩展;
包名称 | 版本 | 描述 |
---|---|---|
Powersheet.Core | Powersheet核心类库,包含接口定义,公共方法实现以及其他需要用到的类。 | |
Powersheet.Npoi | Powersheet的NPOI实现 | |
Powersheet.Epplus | Powersheet的EPPLUS实现 |
Powersheet.Epplus或Powersheet.Npoi根据需要安装其一即可。如果需要自行实现表格读取,仅需要引入Powersheet.Core。
命令行
dotnet add package Powersheet.Core
dotnet add package Powersheet.Npoi
dotnet add package Powersheet.Epplus
Script & Interactive
#r "nuget: Powersheet.Core"
#r "nuget: Powersheet.Npoi"
#r "nuget: Powersheet.Epplus"
使用Microsoft.Extensions.DependencyInjection
services.AddSingleton<ISheetWrapper, SheetWrapper>();
使用Autofac
builder.RegisterType<SheetWrapper>().As<ISheetWrapper>().SingleInstance();
如果使用EPPLUS版本的实现,还需要在appSettings.json文件增加一个配置节点
"EPPlus": {
"ExcelPackage": {
"LicenseContext": "NonCommercial"
}
}
Task<DataTable> ReadToDataTableAsync(string file, SheetReadOptions options, int sheetIndex, CancellationToken cancellationToken);
- file - 文件路径
- options - 配置选项
- sheetIndex - 表格位置索引,起始值为0
Task<DataTable> ReadToDataTableAsync(string file, SheetReadOptions options, string sheetName, CancellationToken cancellationToken);
- file - 文件路径
- options - 配置选项
- sheetName - 表格名称,不指定取第一个
Task<DataTable> ReadToDataTableAsync(Stream stream, SheetReadOptions options, int sheetIndex, CancellationToken cancellationToken);
- stream - 文件流
- options - 配置选项
- sheetIndex - 表格位置索引,起始值为0
Task<DataTable> ReadToDataTableAsync(Stream stream, SheetReadOptions options, string sheetName, CancellationToken cancellationToken);
- stream - 文件流
- options - 配置选项
- sheetName - 表格名称,不指定取第一个
Task<List<T>> ReadToListAsync<T>(string file, SheetReadOptions options, int sheetIndex, CancellationToken cancellationToken);
- file - 文件路径
- options - 配置选项
- sheetIndex - 表格位置索引,起始值为0
- T - 结果对象类型,必须是类且包含公开的无参构造器
Task<List<T>> ReadToListAsync<T>(string file, SheetReadOptions options, string sheetName, CancellationToken cancellationToken);
- file - 文件路径
- options - 配置选项
- sheetName - 表格名称,不指定取第一个
- T - 结果对象类型,必须是类且包含公开的无参构造器
Task<List<T>> ReadToListAsync<T>(Stream stream, SheetReadOptions options, int sheetIndex, CancellationToken cancellationToken);
- stream - 文件流
- options - 配置选项
- sheetIndex - 表格位置索引,起始值为0
- T - 结果对象类型,必须是类且包含公开的无参构造器
Task<List<T>> ReadToListAsync<T>(Stream stream, SheetReadOptions options, string sheetName, CancellationToken cancellationToken);
- stream - 文件流
- options - 配置选项
- sheetName - 表格名称,不指定取第一个
- T - 结果对象类型,必须是类且包含公开的无参构造器
Task<List<T>> ReadToListAsync<T>(string file, int firstRowNumber, int columnNumber, int sheetIndex, Func<object, CultureInfo, T> valueConvert, CancellationToken cancellationToken);
- file - 文件路径
- firstRowNumber - 起始行号,从1开始
- columnNumber - 列号,起始值为1
- sheetIndex - 表格位置索引,起始值为0
- valueConvert - 值转换方法
Task<List<T>> ReadToListAsync<T>(string file, int firstRowNumber, int columnNumber, string sheetName, Func<object, CultureInfo, T> valueConvert, CancellationToken cancellationToken);
- file - 文件路径
- firstRowNumber - 起始行号,起始值为1
- columnNumber - 列号,起始值为1
- sheetName - 表格名称,不指定取第一个
- valueConvert - 值转换方法
Task<List<T>> ReadToListAsync<T>(Stream stream, int firstRowNumber, int columnNumber, int sheetIndex, Func<object, CultureInfo, T> valueConvert, CancellationToken cancellationToken);
- stream - 文件流
- firstRowNumber - 起始行号,起始值为1
- columnNumber - 列号,起始值为1
- sheetIndex - 表格位置索引,起始值为0
- valueConvert - 值转换方法
Task<List<T>> ReadToListAsync<T>(Stream stream, int firstRowNumber, int columnNumber, string sheetName, Func<object, CultureInfo, T> valueConvert, CancellationToken cancellationToken);
- stream - 文件流
- firstRowNumber - 起始行号,起始值为1
- columnNumber - 列号,起始值为1
- sheetName - 表格名称,不指定取第一个
- valueConvert - 值转换方法
本项目采用 Apache-2.0 协议,可查看 LICENSE 了解更详细内容。
如果您需要向我们反馈 Bug、提供产品意见,可以创建一个 Github issue 联系我们,非常感谢!
Thanks to JetBrains for supporting the project through All Products Packs within their Free Open Source License program.