https://github.com/hanzhaoxin/ExcelReport
This reporting engine is built on NPOI.
https://github.com/hanzhaoxin/ExcelReport
Last synced: 19 days ago
JSON representation
This reporting engine is built on NPOI.
- Host: GitHub
- URL: https://github.com/hanzhaoxin/ExcelReport
- Owner: hanzhaoxin
- License: mit
- Created: 2015-01-18T08:48:59.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2020-10-20T08:15:13.000Z (over 4 years ago)
- Last Synced: 2025-04-02T15:48:09.466Z (20 days ago)
- Language: C#
- Size: 17.7 MB
- Stars: 622
- Watchers: 59
- Forks: 242
- Open Issues: 20
-
Metadata Files:
- Readme: README.md
- License: License.txt
Awesome Lists containing this project
- awesome-starred-test - hanzhaoxin/ExcelReport - This reporting engine is built on NPOI. (C# #)
README
# 快速入门
### ExcelReport是什么?
ExcelReport是一个Excel模板渲染引擎。 它基于关注点分离的理念,将数据与表格样式、字体格式分离。
其中模板承载的表格样式、字体格式在可视化的情况下编辑。开发人员只需要绑定数据与目标标签的对应关系。ExcelReport就可以以数据驱动的方式渲染出目标报表。
### 模块组成

ExcelReport家族现在有四个成员。
ExcelReport负责报表的渲染逻辑。ExcelReport.Driver为ExcelReport提供了操作Excel文档的抽象接口。
ExcelReport.Driver.NPOI是使用NPOI对ExcelReport.Driver的实现。支持xls、xlsx两种格式的Excel文档。ExcelReport.Driver.CSV是针对csv格式的Excel文档对ExcelReport.Driver的实现。
### 渲染模型

Template:模板承载的表格样式、字体格式、占位标签等。
Render:指定模板标签与数据的关系。
Data:注入模板的数据。整个渲染过程也是数据驱动渲染的。
Output:输出文件
### 入门示例
* 步骤一:新建入门项目QuickStart,并引入nuget包:
* 步骤二:创建并编辑模板

* 步骤三:编写代码
```csharp
internal class Program
{private static void Main(string[] args)
{
// 项目启动时,添加
Configurator.Put(".xlsx", new WorkbookLoader());var num = 1;
ExportHelper.ExportToLocal(@"templates\student.xlsx", "out.xlsx",
new SheetRenderer("Students",
new RepeaterRenderer("Roster", StudentLogic.GetList(),
new ParameterRenderer("No", t => num++),
new ParameterRenderer("Name", t => t.Name),
new ParameterRenderer("Gender", t => t.Gender ? "男" : "女"),
new ParameterRenderer("Class", t => t.Class),
new ParameterRenderer("RecordNo", t => t.RecordNo),
new ParameterRenderer("Phone", t => t.Phone),
new ParameterRenderer("Email", t => t.Email)
),
new ParameterRenderer("Author", "hzx")
)
);
Console.WriteLine("finished!");
Console.ReadKey();
}
}
``````csharp
public class StudentInfo
{
public string Name { get; set; }
public bool Gender { get; set; }
public string Class { get; set; }
public string RecordNo { get; set; }
public string Phone { get; set; }
public string Email { get; set; }
}
``````csharp
public static class StudentLogic
{
public static List GetList()
{
List list = new List();
list.Add(new StudentInfo() { Class = "一班", Name = "XXX01", Gender = true, RecordNo = "YYY0001", Phone = "158******01", Email = "xxx01@live.cn" });
list.Add(new StudentInfo() { Class = "二班", Name = "XXX02", Gender = false, RecordNo = "YYY0002", Phone = "158******02", Email = "xxx02@live.cn" });
list.Add(new StudentInfo() { Class = "一班", Name = "XXX03", Gender = true, RecordNo = "YYY0003", Phone = "158******03", Email = "xxx03@live.cn" });
list.Add(new StudentInfo() { Class = "一班", Name = "XXX04", Gender = true, RecordNo = "YYY0004", Phone = "158******04", Email = "xxx04@live.cn" });
return list;
}
}
```* 输出结果
### 更多文章
[ExcelReport文档](https://www.yuque.com/motse/excelreport)### 相关用户组
[npoi users group](https://t.me/npoidevs)