• Stars
    star
    618
  • Rank 72,208 (Top 2 %)
  • Language
    C#
  • License
    MIT License
  • Created over 9 years ago
  • Updated almost 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

This reporting engine is built on NPOI.

快速入门

ExcelReport是什么?

ExcelReport是一个Excel模板渲染引擎。 它基于关注点分离的理念,将数据与表格样式、字体格式分离。
其中模板承载的表格样式、字体格式在可视化的情况下编辑。开发人员只需要绑定数据与目标标签的对应关系。ExcelReport就可以以数据驱动的方式渲染出目标报表。

模块组成

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

渲染模型

image.png
Template:模板承载的表格样式、字体格式、占位标签等。
Render:指定模板标签与数据的关系。
Data:注入模板的数据。整个渲染过程也是数据驱动渲染的。
Output:输出文件

入门示例

  • 步骤一:新建入门项目QuickStart,并引入nuget包:

image.png
image.png

  • 步骤二:创建并编辑模板

image.png
image.png

  • 步骤三:编写代码
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<StudentInfo>("Roster", StudentLogic.GetList(),
                           new ParameterRenderer<StudentInfo>("No", t => num++),
                           new ParameterRenderer<StudentInfo>("Name", t => t.Name),
                           new ParameterRenderer<StudentInfo>("Gender", t => t.Gender ? "" : ""),
                           new ParameterRenderer<StudentInfo>("Class", t => t.Class),
                           new ParameterRenderer<StudentInfo>("RecordNo", t => t.RecordNo),
                           new ParameterRenderer<StudentInfo>("Phone", t => t.Phone),
                           new ParameterRenderer<StudentInfo>("Email", t => t.Email)
                           ),
                        new ParameterRenderer("Author", "hzx")
                       )
                   );
           Console.WriteLine("finished!");
           Console.ReadKey();
       }
}
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; }
}
public static class StudentLogic
{
       public static List<StudentInfo> GetList()
       {
           List<StudentInfo> list = new List<StudentInfo>();
           list.Add(new StudentInfo() { Class = "一班", Name = "XXX01", Gender = true, RecordNo = "YYY0001", Phone = "158******01", Email = "[email protected]" });
           list.Add(new StudentInfo() { Class = "二班", Name = "XXX02", Gender = false, RecordNo = "YYY0002", Phone = "158******02", Email = "[email protected]" });
           list.Add(new StudentInfo() { Class = "一班", Name = "XXX03", Gender = true, RecordNo = "YYY0003", Phone = "158******03", Email = "[email protected]" });
           list.Add(new StudentInfo() { Class = "一班", Name = "XXX04", Gender = true, RecordNo = "YYY0004", Phone = "158******04", Email = "[email protected]" });
           return list;
       }
}
  • 输出结果 image.png

更多文章

ExcelReport文档

相关用户组

npoi users group