最近项目中有用到FreeMarker实现复杂Excel导出,实现效果如下:
其中出现几点问题,做下记录:
1、合并单元格:
要实现上图前两列单元格合并,需要在ftl模板中对应行对应列的Cell单元格中添加ss:MergeDown="${size}",这表示向下合并几格,如上图向下合并2格,其中size最好设为动态的。
2、导出的Excel表格只能在WPS中展示,但用office2007打不开:
查找了很久原因,发现是因为在ftl模板中每一行数据前两格都被设置出现姓名、医生角色两个合并单元格。
解决办法:在设置每行数据时,对合并单元格姓名、医生角色进行index判断,使每个医生的第一行数据设置合并单元格,其余数据行不能出现合并单元格,如符合条件<#if f_index % (size+1) == 0 >才允许显示。
3、Excel表格中的数据换行:
在需要换行的单元格中设置ss:WrapText="1",调节需要换行的那一行的整体高度:<Row ss:AutoFitHeight="0" ss:Height="37.5" >