【思路】使用模板+定位数据法导出复杂Excel报表

JBolt平台里导出Excel底层也是POI,不过没有直接封装POI,平台里因为使用了HUtool工具包,所以直接就用了Hutool里的POI封装去操作导出Excel,但是需要更易用,对jfinal框架更友好方便的支持导出。

这里,我们遇到一个导出复杂Excel的需求,JBolt里通过模板+定位数据的方式,轻松傻瓜式的解决了这个导出问题。

大体思路:

1、通过excel软件创建一个模板xls,静态部分写好了,留空动态数据部分

2、加载模板

3、通过Excel定位填充动态数据

详细思路和步骤看下方教程演示


后记:

这个表格乍一看似乎很复杂,但是其实都是静态数据布局复杂而已,动态数据都是横平竖直的,所以这个需求用定位法去填充模板单元格是最好的方式了。

如何通过英文字母数字组合坐标去定位呢?

JBolt里封装了一个列英文转数字工具方法而已。

其他导出Excel教程:

【分享】如何实现异步导出Excel?

【分享】用HuTool快速将JFinal的model数据导出Excel里

【分享】使用一个Excel模板就能搞定Excel复杂表头样式

JBolt极速开发平台:

http://jbolt.cn/jbolt.html


有问题 加我微信:

mumengmeng


image.png


评论区

北流家园网

2020-11-13 09:44

这种根据Excel模板导出数据的方式不太可取,一个Excel表格有那么多定位,你得一个一个去写,多费劲。你参考一下easypoi,建议你按照这个来做,绝对比你现在的省事多了。

北流家园网

2020-11-13 09:47

还有,如果格式变了,位置变了,你代码又得改一遍?

山东小木

2020-11-14 00:04

@北流家园网 特定场景 文中说了 文章只是提出特定场景的实现方式 只要目的就是提供一个思路 可以根据原生excel坐标定位数据 写出 针对特定的非数据库字段数据 后面还会提供xml模板 使用enjoy模板引擎即可 哪个时候就没法用坐标了 得每个数据起个模板里的名字 其实更麻烦的

山东小木

2020-11-14 00:05

@北流家园网 相比用坐标快速定位 其实比在模板里写一个名字后台弄map数据要容易的多 只不过模板变化后不能适应 跟你说的一样需要修改java代码了 使用动态模板就可以

山东小木

2020-11-14 00:10

@北流家园网 easypoi并不太适合Jfinal的model和record数据

山东小木

2020-11-14 00:12

我在社区里写的是一套系列文章 从头开始 各种用法思路,动态模板还没讲到。 针对JFinal model和record的特殊性 从最简单的 到最复杂的 一个系列教程 现在这个下面还有支持动态xml模板的 enjoy渲染导出xls的

北流家园网

2020-11-14 09:16

这个可以,我学习一下。我直有个想法,但未能实现。
excel作为动态模板,可以导出文件,也可以直接html展示,html展示后,保留Excel样式,sum等一些函数也能使用,还可以分页、打印,这样就不依赖任何第三方报表打印插件了。

山东小木

2020-11-14 10:35

@北流家园网 jsexcel可以支持 excel底层可以做成xml