使用Jxls进行强大、快速、可视化的Excel模板导出

使用Jxls进行强大、快速、可视化的Excel模板导出

对后端来说,使用 poi 包进行Excel文件的读取比较常用,但是如果时用poi包来进行Excel表格的导出,就十分难受了,因为要一个、一个单元格进行读写,需要控制行、列坐标,实在太难受。更为难受的是,如果产品突然要在中间插入一个单元格,那改动就十分大了

Jxls

Jxls工具包有以下特性:

  1. 可视化。只需要在Excel里面书写类似 jsp 语法,jxls就可以识别并进行数据的填充。同时你可以进行模板的美化,比如填充红色、加粗字体等。
    使用Jxls进行强大、快速、可视化的Excel模板导出
  2. 修改方便。因为jxls类似于 模板引擎,添加、删除字段只需要修改 excel模板即可,不影响数据的填充
  3. 支持自定义函数。笔者认为是非常强大的功能,就是在模板渲染的时候,可以调用 java函数,这就可以实现很多灵活的转换了,比如常见的 ifelse 、日期转 字符串、0、1转是、否等操作。
  4. 自动处理 null值,如果为null则不显示,不像freemarker一样,需要自行处理空值以及日期转换。
  5. 原生。打开就是Excel表格,不像 freemarker 一样有个警告框。

Jxls 常见语法

  1. 指定模板内容的范围,需要在模板内容最右上角的单元格添加批注(快捷键:Shift+F2):jx:area(lastCell="有效范围右下角的单元格")G3就是上面图片所示的模板右下角的单元格。
  2. 遍历、循环语法:jx:each(items="list" var= "item" lastCell="G3") item: 就是java变量名,var就是遍历时的单个元素的名字,lastCell 就是这个遍历影响的范围。

更多语法,请参见 链接

导出工具类

工具类Gitee代码段

注意事项

获取模板文件的时候,在 IDE 开发时可以通过 指定文件相对/绝对路径(如/templates/xxx )从而获取到文件,但是项目上线打包成 jar 包时,相对路径会失效,从而导致导出失败,请参考 工具类里面的 JxlsExportExcelUtils.java 中的 getInputStreamByTemplateName 方法来读取文件——但这种方式则不支持本地IDE开发