- 需求
公司产品要求做一个报表,这个报表的列数是不固定的,行数也是不固定的,当时一听,我就觉得蛋疼,瞎折腾,因为一年前做过类似需求,当时使用的是POI导出的报表,结果把自己坑了。常理中报表大部分都是列数固定,行数不一定固定。关系型数据库里数据就是这样设计的啊,但是列数不固定,就少见了。虽然一百个不情愿做这样的需求,但是谁让你不是老板呢!谁让你只是个搬砖的呢! - 思考
POI现在肯定不能用了,因为太麻烦,不灵活,可复用率低,所以这次选择使用freemark,至于如何集成,如何导出,在这里都不做详细阐述,网上成熟教程多的是,这里只分享经验,满足行列不固定的需求。 - 研究
*.ftl文档其实是有自己的一套编码规则的,与EL表达式有点类似。经过一番查找,找到这几个函数,
// 遍历集合:
<#list empList! as emp>
${emp.name!}
</#list>
//申明变量的几种方式
<#assign name=value>
- 开发
<#list listExport as plist>
<Row ss:AutoFitHeight="0">
<Cell ss:StyleID="s25"><Data ss:Type="String">${plist.dataTime!}</Data></Cell>
<#if plist.remitList?exists>
<#assign clist=plist.remitList/>
<#list clist as clist>
<Cell ss:StyleID="s25"><Data ss:Type="String">${clist}</Data></Cell>
</#list>
</#if>
<Cell ss:StyleID="s25"><Data ss:Type="String">${plist.remitBalance0}</Data></Cell>
<Cell ss:StyleID="s25"><Data ss:Type="String">${plist.remitBalance1}</Data></Cell>
<Cell ss:StyleID="s25"><Data ss:Type="String">${plist.remitBalance}</Data></Cell>
</Row>
</#list>