https://github.com/codespilot/powersheet
Powersheet是一个基于.net standard 2.1开发的跨平台的Excel数据导入、导出类库。
https://github.com/codespilot/powersheet
Last synced: about 1 year ago
JSON representation
Powersheet是一个基于.net standard 2.1开发的跨平台的Excel数据导入、导出类库。
- Host: GitHub
- URL: https://github.com/codespilot/powersheet
- Owner: Codespilot
- License: apache-2.0
- Created: 2021-07-16T01:17:18.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2022-10-10T01:44:02.000Z (over 3 years ago)
- Last Synced: 2024-04-27T06:36:59.691Z (about 2 years ago)
- Language: C#
- Homepage:
- Size: 231 KB
- Stars: 5
- Watchers: 3
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
## Powersheet简介
Powersheet是一个基于.net standard 2.1开发的跨平台的Excel数据导入、导出类库。配置灵活,使用方便。支持DataTable、List作为数据源。支持侵入和非侵入两种字段映射配置方式。
### 功能
1. 从Excel文件或流提取数据并转换为DataTable或对象集合;
2. 将DataTable或对象集合的数据写入到Excel文件;
### 特色
1. 基于.net standard 2.1开发,支持跨平台使用;
2. 轻量,不需要安装 Microsoft Office、COM+组件,体积小;
3. 提供nuget包,安装方便快捷;
4. 使用简单,对象属性和Excel列映射配置灵活,支持侵入式(使用属性Attribute)和非侵入(传入配置参数)两种方式;
5. 易于扩展;
## Nuget包
|包名称|版本|描述|
|--|--|--|
|Powersheet.Core|[](https://www.nuget.org/packages/Powersheet.Core/)|Powersheet核心类库,包含接口定义,公共方法实现以及其他需要用到的类。|
|Powersheet.Npoi|[](https://www.nuget.org/packages/Powersheet.Npoi/)|Powersheet的NPOI实现|
|Powersheet.Epplus|[](https://www.nuget.org/packages/Powersheet.Epplus/)|Powersheet的EPPLUS实现|
## 如何使用
### 安装Powersheet
> Powersheet.Epplus或Powersheet.Npoi根据需要安装其一即可。如果需要自行实现表格读取,仅需要引入Powersheet.Core。
命令行
```shell
dotnet add package Powersheet.Core
dotnet add package Powersheet.Npoi
dotnet add package Powersheet.Epplus
```
Script & Interactive
```shell
#r "nuget: Powersheet.Core"
#r "nuget: Powersheet.Npoi"
#r "nuget: Powersheet.Epplus"
```
### 配置依赖注入
使用Microsoft.Extensions.DependencyInjection
```csharp
services.AddSingleton();
```
使用Autofac
```csharp
builder.RegisterType().As().SingleInstance();
```
如果使用EPPLUS版本的实现,还需要在appSettings.json文件增加一个配置节点
```json
"EPPlus": {
"ExcelPackage": {
"LicenseContext": "NonCommercial"
}
}
```
### 接口定义
#### 读取表格内容到DataTable
```csharp
Task ReadToDataTableAsync(string file, SheetReadOptions options, int sheetIndex, CancellationToken cancellationToken);
```
> 1. file - 文件路径
> 2. options - 配置选项
> 3. sheetIndex - 表格位置索引,起始值为0
```csharp
Task ReadToDataTableAsync(string file, SheetReadOptions options, string sheetName, CancellationToken cancellationToken);
```
> 1. file - 文件路径
> 2. options - 配置选项
> 3. sheetName - 表格名称,不指定取第一个
```csharp
Task ReadToDataTableAsync(Stream stream, SheetReadOptions options, int sheetIndex, CancellationToken cancellationToken);
```
> 1. stream - 文件流
> 2. options - 配置选项
> 3. sheetIndex - 表格位置索引,起始值为0
```csharp
Task ReadToDataTableAsync(Stream stream, SheetReadOptions options, string sheetName, CancellationToken cancellationToken);
```
> 1. stream - 文件流
> 2. options - 配置选项
> 3. sheetName - 表格名称,不指定取第一个
#### 读取表格内容到对象集合
```csharp
Task> ReadToListAsync(string file, SheetReadOptions options, int sheetIndex, CancellationToken cancellationToken);
```
> 1. file - 文件路径
> 2. options - 配置选项
> 3. sheetIndex - 表格位置索引,起始值为0
> 4. T - 结果对象类型,必须是类且包含公开的无参构造器
```csharp
Task> ReadToListAsync(string file, SheetReadOptions options, string sheetName, CancellationToken cancellationToken);
```
> 1. file - 文件路径
> 2. options - 配置选项
> 3. sheetName - 表格名称,不指定取第一个
> 4. T - 结果对象类型,必须是类且包含公开的无参构造器
```csharp
Task> ReadToListAsync(Stream stream, SheetReadOptions options, int sheetIndex, CancellationToken cancellationToken);
```
> 1. stream - 文件流
> 2. options - 配置选项
> 3. sheetIndex - 表格位置索引,起始值为0
> 4. T - 结果对象类型,必须是类且包含公开的无参构造器
```csharp
Task> ReadToListAsync(Stream stream, SheetReadOptions options, string sheetName, CancellationToken cancellationToken);
```
> 1. stream - 文件流
> 2. options - 配置选项
> 3. sheetName - 表格名称,不指定取第一个
> 4. T - 结果对象类型,必须是类且包含公开的无参构造器
#### 读取指定单列数据到集合
```csharp
Task> ReadToListAsync(string file, int firstRowNumber, int columnNumber, int sheetIndex, Func valueConvert, CancellationToken cancellationToken);
```
> 1. file - 文件路径
> 2. firstRowNumber - 起始行号,从1开始
> 3. columnNumber - 列号,起始值为1
> 4. sheetIndex - 表格位置索引,起始值为0
> 5. valueConvert - 值转换方法
```csharp
Task> ReadToListAsync(string file, int firstRowNumber, int columnNumber, string sheetName, Func valueConvert, CancellationToken cancellationToken);
```
> 1. file - 文件路径
> 2. firstRowNumber - 起始行号,起始值为1
> 3. columnNumber - 列号,起始值为1
> 4. sheetName - 表格名称,不指定取第一个
> 5. valueConvert - 值转换方法
```csharp
Task> ReadToListAsync(Stream stream, int firstRowNumber, int columnNumber, int sheetIndex, Func valueConvert, CancellationToken cancellationToken);
```
> 1. stream - 文件流
> 2. firstRowNumber - 起始行号,起始值为1
> 3. columnNumber - 列号,起始值为1
> 4. sheetIndex - 表格位置索引,起始值为0
> 5. valueConvert - 值转换方法
```csharp
Task> ReadToListAsync(Stream stream, int firstRowNumber, int columnNumber, string sheetName, Func valueConvert, CancellationToken cancellationToken);
```
> 1. stream - 文件流
> 2. firstRowNumber - 起始行号,起始值为1
> 3. columnNumber - 列号,起始值为1
> 4. sheetName - 表格名称,不指定取第一个
> 5. valueConvert - 值转换方法
## 协议
本项目采用 Apache-2.0 协议,可查看 [LICENSE](https://github.com/realzhaorong/Powersheet/blob/master/LICENSE) 了解更详细内容。
## 联系我们
如果您需要向我们反馈 Bug、提供产品意见,可以创建一个 [Github issue](https://github.com/realzhaorong/Powersheet/issues) 联系我们,非常感谢!
---
[](https://www.jetbrains.com/)
Thanks to [JetBrains](https://www.jetbrains.com/) for supporting the project through [All Products Packs](https://www.jetbrains.com/products.html) within their [Free Open Source License](https://www.jetbrains.com/community/opensource) program.
---
