开源组件ExcelReport 1.5.2 使用手册

ExcelReport是一款基于NPOI开发的报表引擎组件。它基于关注点分离的理念,将数据与样式、格式分离。让模板承载样式、格式等NPOI不怎么擅长且实现繁琐的信息,结合NPOI对数据的处理的优点将Excel报表的生成化繁为简。同时,对报表组成的基本元素进行了抽象,进一步简化了Excel报表的生成过程。

官方站点

NuGet:https://www.nuget.org/packages/ExcelReport

GitHub:https://github.com/hanzhaoxin/ExcelReport

cnblogs:http://www.cnblogs.com/hanzhaoxin/tag/ExcelReport /

QQ Group:116476496 

团队介绍

Jensen

来自于中国深圳,是这个项目的发起人和开发人员,2014年11月开始了ExcelReport的开发,负责ExcelReport的开发、测试和bug修复。

个人博客地址:http:// hanzhaoxin.cnblogs.com

许可证说明

ExcelReport采用的是MIT许可,这意味着它可以被用于任何商业或非商业项目,你不用担心因为使用它而必须开放你自己的源代码,且可借助ExcelReport的影响力推广你的产品。

当然作为一个开源许可证,肯定也是有一些义务。例如:在软件和软件的所有副本中都必须包含以上版权声明和本许可声明。

完整的MIT许可证请见:http://mit-license.org/

版本升级说明:

如果您项目中使用了ExcelReport,Bug修复和功能扩充的升级版本请放心升级,这类升级不能影响您现有的项目。如果架构修改版本信息发生了变化,请谨慎升级,这类升级有可能影响您现有的项目。

为什么要用ExcelReport?

回答这个问题前,我们先看看Tony Qu是怎么回答为什么要用NPOI的?

1)你不需要在服务器上安装微软的 Office,可以避免版权问题。

2)NPOI使用起来比 Office PIA 的 API 更加方便,更人性化。

3)你不用去花大力气维护 NPOI,NPOI Team 会不断更新、改善 NPOI,绝对省成本。

4)很多事情是 html 和cvs法做不到的,比如说公式计算[Cell C1]=A1+B1*A2单元格

高级样式(如文本旋转、对齐、宽度)等,其中公式计算可以适当减轻服务器端的计算压力

回到我们的问题,为什么要用ExcelReport呢?

1) 复杂的事情简单了,不可能的事情可行了。

2) 你不需要了解NPOI大量的API,你不需要用.NET语言写蹩脚的Java的语法。

3) 套用Tony兄的描述,你不用去花大力气维护ExcelReport,ExcelReport Team会不断更新、改善ExcelReport,绝对省成本。

目录

1报表元素与元素格式化器

2演示:使用ExcelReport生成报表

3格式化器示例

3.1局部格式化器

3.2单元格格式化器

3.3表格格式化器

3.4重复单元格式化器

4多Sheet报表生成

1报表元素与元素格式化器

在开始示例之前,我们用一章的篇幅介绍ExcelReport是如何将报表的内容抽象为元素的?

又是如何为元素填充数据的?为了说明第一个问题,我们从一个现有的报表开始。

如下报表有两个Sheet:Sheet1名为“工资表”Sheet2名为“工资条”,其截图如下所示。

我们先把数据部用蓝色框线标出来。

名正才能言顺,先说说ExcelReport中报表元素的概念:

  • 元素:填充到报表模板中的数据源对象,我们称之为元素。
  • 局部元素:填充到报表模板中的数据源对象是一个单元格内容的一部分,我们称这样的数据源对象为局部元素。
  • 单元格元素:填充到报表模板中的数据源对象是一个单元格的内容,我们称这样的数据源对象为单元格元素。
  • 表格元素:填充到报表模板中的数据源是某对象的集合,该对象是一行中多个单元格的内容集合,我们称这样的数据源集合为表格元素。
  • 重复单元元素:填充到报表模板中的数据源是某对象的集合,该对象是多行中多个单元格的内容集合,我们称这样的数据源集合为重复单元元素。

    【表格元素与重复单元元素数据源以集合出现。为复元素。】

    【对应的,局部元素和单元格元素称之为单元素。】

    有了定义,我们让元素们各就各位。

    那么,ExcelReport又是如何为元素填充数据的?

    话说元素格式化器为此而生。

    报表元素


    元素格式化器


    局部元素


    PartFormatter


    单元格元素


    CellFormatter


    表格元素


    TableFormatter


    重复单元元素


    RepeaterFormatter

    【元素格式化器的作用是格式化元素将其填充到报表模板。】

    2演示:使用ExcelReport生成报表

    目标报表,生成上章分析的”工资表-工资条”报表。

    第一步:设计模板

    【模板中参数格式:$[ParameterName]】

    第二步:由模板生成模板填充规则文件

    1) 打开模板填充规则文件生成工具

    2) 将设计好的模板拖入Excel模板文件选择框

    3) 点击“生成模板规则文件(.XML)”按钮,生成规则文件。

    第三步:填充模板,生成报表【项目中要添加对ExcelReport及NPOI(2.0以上)的引用】

    生成导出报表:

    【注:演示示例“生成工资表-工资条报表”源码见解决方案:ExcelReportExamples】

    3格式化器示例

    通过上一章的示例,我们了解了ExcelReport生成报表的步骤,也用到了各种格式化器。在本章,我们将对格式化器逐一展开讲解,以更详细的了解它们。

    3.1局部格式化器

    局部格式化器用于格式化填充一个单元格内容的一部分。填充数据类型为string。

    构成函数:

    参数


    描述


    cellPoint


    参数所在单元格位置


    parameterName


    参数名


    value


    要格式化填充的值

    示例:(局部格式化器示例:Hello$[UserName],welcome in ExcelReport’s group $[GroupNo].)

    第一步:设计模板

    第二步:由模板生成模板填充规则文件

    第三步:填充模板,生成报表

    生成导出报表:

    3.2单元格格式化器

    单元格格式化器用于格式化填充一个单元格。填充数据类型为object,详见下表:

    填充数据类型


    Excel中对应的数据类型


    可视化设置项


    String


    String

     

    DateTime


    DateTime



    Boolean


    Boolean

     

    Int16

    Int32

    Int64

    Byte

    Single

    Double

    UInt16

    UInt32

    UInt64


    Double



    Byte[]


    Image

     

    构成函数:

    参数


    描述


    cellPoint


    参数所在单元格位置


    value


    要格式化填充的值

    示例:(单元格格式化器示例)

    第一步:设计模板

    第二步:由模板生成模板填充规则文件(略,详参见第2章“演示”)

    第三步:填充模板,生成报表

    生成导出报表:

    3.3表格格式化器

    表格格式化器用于格式化填充一个表格。填充数据类型为IEnumerable<TSource>。

    构造函数:

    参数


    描述


    templateRowIndex


    模板行行标


    dataSource


    要格式化填充的数据


    columnInfos


    列信息集合

    TableColumnInfo构造函数:

    参数


    描述


    columnIndex


    列标


    dgSetValue


    Func<TSource, object>类型的委托对象(返回值Object,可参照第二节填充数据类型与Excel中数据类型对应表。)

    示例:(表格格式化器示例)

    第一步:设计模板

    第二步:由模板生成模板填充规则文件(略,详参见第2章“演示”)

    第三步:填充模板,生成报表

    生成导出报表:

    提问回复:【关于TableFormatter有以下知识点,多次被提问,这里做出统一回答。】

    问题一:TableFormatter的数据源可以是DataTable吗?

    答:你可以这样写:

    问题二:我的实体类中没有实现外链,在实体对象中有一个ID属性,我想导出的内容是ID对应的Name,这怎么办?

    答:和示例中的“性别”没什么区别吧。好吧,贴行代码:

    3.4重复单元格式化器

    重复单元格式化器用于格式化填充一个重复单元元素。填充数据类型为IEnumerable<TSource>。

    构造函数:

    参数


    描述


    startTagCell


    重复单元(开始)标识单元格


    endTagCell


    重复单元(结束)标识单元格


    dataSource


    要格式化填充的数据


    cellInfos


    重复单元包含的单元格信息集合

    RepeaterCellInfo构造函数:

    参数


    描述


    cellPoint


    单元格坐标


    dgSetValue


    Func<TSource, object>类型的委托对象(返回值Object,可参照第二节填充数据类型与Excel中数据类型对应表。)

    示例:(重复单元格式化器示例)

    第一步:设计模板

    根据需求,隐藏重复单元标识行。

    第二步:由模板生成模板填充规则文件(略,详参见第2章“演示”)

    第三步:填充模板,生成报表

    生成导出报表:

    4多Sheet报表生成

    到目前为止,我们所有导出都直接使用的是:ExportHelper类中的静态方法。其实在ExcelReport组件的设计中Export类便是终点了,ExportHelper类正如它的名字只是为了方便操作提供的助手类而已。

    【哦,它还是部分类,你可以根据需求扩展。】

    回到本章的主题,我们要谈的是多Sheet报表的生成。什么?这和前边啰嗦的那些有什么关系?好吧,其实关系也不大,我只是想说关注报表的生成,你看Export类就对了。

    参数


    描述


    templateFile


    模板文件路径


    containers


    Sheet格式化容器的数组【数组中的每个元素对应一个Sheet】

    示例:(多Sheet报表生成示例)

    第一步:设计模板

    第二步:由模板生成模板填充规则文件(略,详参见第2章“演示”)

    第三步:填充模板,生成报表

    生成导出报表:

  • 时间: 2024-08-14 09:55:41

    开源组件ExcelReport 1.5.2 使用手册的相关文章

    开源组件ExcelReport 3.x.x 使用手册(为.netcore而来)

    ExcelReport转眼已经开源4年了,期间有很长时间也停止了对它的维护.18年年末有人联系到我,说“兄弟,ExcelReport不错,但什么时候支持.netcore呢?”.我寥寥的回了几句搪塞的话,也没当回事.后来这兄弟又来问我,恰好这时临近春节,我在老家休年假,也没什么事.就答应了. ExcelReport是什么? 考虑到ER的老用户并不多,这里有必要介绍下ExcelReport是什么? ExcelReport是一款基于模板的Excel报表生成组件. 它基于关注点分离的理念,将数据与样式.

    大量的文档,大量的示例代码,大量的开源组件,大量的社区,大量的码农

    移动用各个平台的原生工具和代码,当年被Delphi忽悠,入了贼船,这次搞移动,坚定了跟着厂家走的策略.每次更新不用傻等Delphi跟进,大量的文档可以参考,大量的示例代码可以直接copy,大量的开源组件可以拿来就用,大量的社区可以做到有问必答. 如果有一天真的做大了,还有大量的iOS/Java码农可以招聘,组队团PK. 总之是选路要选对啊.这两年如果不是EMB出现救市,Delphi差点成了绝唱.想想都后怕.移动开发不敢在冒险了. 参考:http://bbs.2ccc.com/topic.asp?

    开源组件整理

    ZedGraph  一个图表组件,可定制绘图控件,饼图.柱图.曲线图.多边形图,图示,图例,自定义配置坐标系属性 log4Net基于.net开发的一款非常著名的记录日志开源组件. ajax.dllweb开发中常用的一个dll,使用比较便捷 ObjectListView是一个C# 对.NET中的ListView 组件进行改进和增强的新组件,支持自动排序.分组显示.单元格编辑.数据绑定和列大小调整等功能,提供也提供了一个基于 wxPython 的Python版本. 件很多如 ComponentOne

    分享几个.NET WinForm开源组件,纪念逐渐远去的WinForm。。。

    http://www.cnblogs.com/asxinyu/p/dotnet_opensource_project_WinForm.html 分享几个.NET WinForm开源组件,纪念逐渐远去的WinForm... 前面3个月的时间内,这些.NET开源项目你知道吗?系列文章已经发表了3篇,共计45个平时接触比较少,曾经默默无闻的.NET开源项目,展示给大家,当然不是每个人都能用得上,但也的确是有些人用了,反响还不错,所以非常感谢大家的支持.由于收藏夹的项目越来越少,越整理到最后,越发现一些

    25-网易新闻iOS版使用的开源组件

    网易新闻iOS版使用的开源组件 2015-05-20 ios博文精选 网易新闻iOS版在开发过程中曾经使用过的第三方开源类库.组件 1.AFNetworkingAFNetworking 采用 NSURLConnection + NSOperation, 主要方便与服务端 API 进行数据交换, 操作简单, 功能强大, 现在许多人都用它取代 ASIHTTPRequest 2.Apple Reachability网络监测,可以参考下这篇文章iOS网络监测如何区分2.3.4G? 3.DOUAudioS

    Infer.net 开源组件: 1, 机器学习入门,要从贝叶斯说起

    我的入门方式,先从应用现象中,总结规律反推本质.一头扎进理论书籍是不对的. 老外的先进,还是体现在传承方面.没办法,我们竞争压力大,有好东西藏着掖着.大家都苦逼 我最开始是从介绍,有了基本概念,见xxx.知道十大算法,可以开工了. 开源组件入手的,infer.net 例子很经典,讲解细,这也是老外程序员成才快的原因.之前看libusb也是如此,程序员英语不好路是走不远的,我深有体会. 下面简介下基本概念,我是喜欢预测方面所以对机器分类学习感兴趣. 因为人不必要求计算机像人一样.视觉,听觉不是最终

    使用Jayrock开源组件创建参数可为空的接口

    经过上一篇文章对Jayrock开源组件的分析,我发现了一个问题,就是在写接口的时候,可以设置某个参数为空,可以不需要进行参数的传递,具体写法如下: 图上的test参数就是可空类型,只需标识为int?类型即可.测试结果如下: 使用非常的简单,也验证了我上一篇文章的错误观点,在此说明一下.

    Android自定义控件——开源组件SlidingMenu的项目集成

    转载请注明出处:http://blog.csdn.net/allen315410/article/details/39611355  在实际项目开发中,定制一个菜单,能让用户得到更好的用户体验,诚然菜单的样式各种各样,但是有一种菜单--滑动菜单,是被众多应用广泛使用的.关于这种滑动菜单的实现,我在前面的博文中也介绍了如何自定义去实现,请参考Android自定义控件--侧滑菜单,这篇博文描述的是如何从无到有创建一个侧滑菜单的控件,里面的代码不多,但是处理的逻辑和各种效果比较复杂,如果稍有不慎,这种

    【高德LBS开源组件大赛】公众号地图工具

    应用的名称 公众号地图工具 应用说明及使用场景 现在越来越多的商户都有自己的实体店,比如连锁超市(家乐福,沃尔玛),连锁餐饮(KFC,麦当劳),连锁酒店(7天,汉庭,全季,如家),菜鸟物流(原天猫服务站),银行等.而开发一张连锁店地图,对于毫不懂技术的人们来说,是十分困难的事情.本工具就提供了一个,即使不懂代码,也能制作出一张有趣可爱又实用的连锁店地图.并且,可以自动定位并检索周边的POI点.本工具非常适用于,微博.微信.支付宝服务窗等手机上的地图显示. 应用所使用的技术及软件 HTML CSS