需求:
JBolt极速开发平台里需要给定数据源(比如List或List)就能导出正确的数据
分析:
JFinal的Model和Record 数据都是键值对放Map中,也没有顺序,但是我们在导出Excel的时候,一般是需要导出表里的一部分列,而且需要有一定的顺序,并且列名最好还是中文。
那么,Model和Record里的Map似乎需要转换一下。
技术选型:
hutool的Excel工具类。
Hutool的ExcelUtil、ExcelWriter比较好用,有个Header别名设置。
具体用法链接:
在JFinal里有些特殊需要处理一下:
数据库里的字段名如下:
Header需要做别名:excelWriter.addHeaderAlias(“version”, "版本号");
excelWriter.addHeaderAlias(“publish_time”, "发布时间");
这样通过别名设置就可以对应起来Header的中文名和数据库字段名了。
而且设置别名的顺序可以控制Excel中导出列的顺序,是不是很完美。
开始导出:
先定Header:excelWriter.setOnlyAlias(true);//只导出设置类别名的列,其他字段都不要导出
excelWriter.writeHeadRow(headers);//写出Header
这里的Headers是个listList headers=new ArrayList();
headers.add("版本号");
headers.add("发布时间");
再定数据行:excelWriter.write(datas,false);
这里的datas就是一个List> 数据库里的每一条数据,都是一个HashMap.
可以把Model和Record的具体attrs或者columns的值给它就可以了。HashMap data=CPI.getAttrs(model);
每一个字段数据都是kv键值对,key就是上面别名控制的column name value就是具体值了。
只要组装好数据,很容易就导出了。
这里,我录制了一个JBOlt极速开发平台里封装过的快速导出Excel的专题小教程,如果你已经是JFinal开发者计划成员,可以更方便的学习使用它。
您的浏览器不支持 video 标签
有问题就加我微信
微信:mumengmeng