为什么不用jxl、poi的方式进行导出呢?如果模板复杂、又包含一些动态的判断,就要在后台写很多很多判断的代码,费时费力又容易出错,使用freemaker定制模板就方便很多很多。话不多说,一再强调,思路很重要。
使用freemaker思路(相当于mvc模式下的一次请求,便于理解):
1、定制模板(新建模板里放值的地方先随便写个汉字站位,另存为xml文件类型,最后改为.ftl后缀的文件)。(相当于jsp页面)
2、后台方法查询要导出的数据,所有的数据都保存到一个map中。(相当于Contrller中获取数据的方法)
3、将map中的数据填充到模板中的站位的汉字处。(相当于jsp中用el表达式、jstl等赋值变量)
4、调用freemarker相关的类的方法及下载的方法,实现导出下载。(相当于controller中的方法带着数据响应到jsp页面的过程)
下来图文介绍每一步:
1、定制模板:
汉字"站位"进行站位;保存为xml
2、后台方法查询要导出的数据,所有的数据都保存到一个map中。
创建Map将要展示的集合,变量,对象等保存进去,如图:
3、将map中的数据填充到模板中的站位的汉字处。
将xml后缀的文件放入的开发工具中(一般放到web-info下新建的文件夹中),如下进行赋值,赋值完成后修改后缀为ftl;
扩充:
一.变量后的感叹号是如果变量不存在就给默认值,语法:variable!default_variable,不写默认值就取单元格类型的默认值。
二.<#list listAll as qingAll中取序号:${qingAll_index+1},qingAll是集合中的每一个元素的别名(as后面跟的)
三.if判断如下:s93和s95是单元格字体颜色(可以在<style>中设置)。
四。还有“??”判空的可以在网上搜索使