# ExcelSugar
**Repository Path**: ccnetcore/excelsugar
## Basic Information
- **Project Name**: ExcelSugar
- **Description**: 🔥爽🔥ORM To Excel,像操作对象一样操作Excel,支持查询、导出、模板等常用功能;
使用方式类比于SqlsugarORM,优雅简单,excel快速上手的不二之选;
具备的完整的单元测试,可以在仓库中查看及详细使用;
- **Primary Language**: C#
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 14
- **Forks**: 3
- **Created**: 2023-11-16
- **Last Updated**: 2025-04-28
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
一套以用户体验出发的.netstandard2.1 Excel开源工具包
支持查询、导出、模板等常用功能,语法与Sqlsugar类似
Excel快速上手的不二之选
#### ExcelSugar 介绍
ORM To Excel,像操作对象一样操作Excel,支持查询、导出、模板等常用功能;
使用方式类比于SqlsugarORM,优雅简单,excel快速上手的不二之选;
具备的完整的单元测试,可以在仓库中查看及详细使用;
> 正在持续迭代中,支持的功能会越来越多~~!
#### 优势
1. [x] 将Excel当作`对象`操作,使用简单,1分钟上手
2. [x] 语法与`SqlsugarORM`基本类似,两者都可以兼得
3. [x] 支持`where`表达式查询
4. [x] 支持来自`模板`导出
5. [x] 支持`动态表头`功能
6. [x] 支持单元格存储`对象`操作
7. [x] 完善的`单元测试`,可以查看详细使用操作
8. [x] 作者`24`小时在线,可QQ联系:454313500
#### 安装教程
Nuget包管理器直接搜索ExcelSugar.Npoi安装即可(后续可更换实现)
- ExcelSugar.Core(核心包-自动依赖)
- ExcelSugar.Npoi(实现包,下载)
- ExcelSugar.AspNetCore(正在开发)
#### 使用说明
1. 创建ExcelClient
``` cs
IExcelSugarClient excelSugarClient = new ExcelSugarClient(new ExcelSugarConfig { Path = "../../../TempExcel/Test.xlsx", HandlerType = ExcelHandlerType.Npoi });
```
2. 定义模型,并打上对应的特性
``` cs
[SugarSheet("测试表")]
public class TestModel
{
[SugarHead("姓名")]
public string Name { get; set; }
[SugarHead("描述")]
public string Description { get; set; }
///
/// 导出可支持动态列模型
///
[SugarDynamicHead]
public List DynamicModels { get; set; } = new List();
[SugarHead("字典列", IsJson = true)]
public Dictionary Dic { get; set; } = new Dictionary();
[SugarHead("对象列", IsJson = true)]
public ObjectModel ObjectModel { get; set; } = new ObjectModel();
}
///
/// 动态表头,需具备IsCode、IsValue、IsName 3个字段
///
public class DynamicModel
{
[SugarDynamicHead(IsCode = true)]
public string DataCode { get; set; }
[SugarDynamicHead(IsValue = true)]
public int DataValue { get; set; }
[SugarDynamicHead(IsName = true)]
public string DataName { get; set; }
}
public class ObjectModel
{
public string Test1 { get; set; }
public int Test2 { get; set; }
public List Test3 { get; set; } = new List();
public List Test4 { get; set; }
}
```
3. 使用client操作即可
``` cs
//创建实体
var testModel = new List {
new TestModel { Description = "男的", Name = "张三",
Dic=new Dictionary{ { 10,"OK"},{20,"NO" } },
ObjectModel=new ObjectModel{ Test1="1",Test2=2,Test3=new List{ "1","2","3"},Test4=new List{ 6,7,8,9} },
DynamicModels = new List{
new DynamicModel { DataCode="height",DataName="身高",DataValue=188},
} },
new TestModel { Description = "女的", Name = "李四",
ObjectModel=new ObjectModel{ Test1="11",Test2=222,Test3=new List{ "11","22","33"},Test4=new List{ 66,77,88,99} },
DynamicModels=new List{
new DynamicModel { DataCode="height",DataName="身高",DataValue=168},
new DynamicModel { DataCode="age",DataName="年龄",DataValue=18},
} }
};
//从excel中查询出实体
var data = await client.Queryable().ToListAsync();
//从excel中查询出实体,支持where表达式
var data = await client.Queryable().Where(x => x.Name == "张三").ToListAsync();
//将实体直接导出excel
await client.Exportable(testModel).ExecuteCommandAsync();
//将实体根据给定的模板进行导出excel
await client.Exportable(testModel).From("../../../TempExcel/Template.xlsx").ExecuteCommandAsync();
//Or await client.Exportable("../../../Test.xlsx").ExecuteCommandAsync();
```
效果:

#### 致谢
- [Sqlsugar老杰哥] https://www.donet5.com/Home/Doc
#### 联系我们
- 可通过QQ进行联系:454313500
- 可通过本仓库进行联系