1,横向遍历
#fe
使用#fe命令可以实现集合数据的横向拓展,比如模板代码是
{{#fe:maths t.score}}
导出的excel里面就会显示会自当前列,向右拓展,效果可参见下面的导出文件截图
2,横向遍历值
v_fe
使用v_fe命令可以实现不固定列的横向遍历,比如模板代码是
分数 | ID |
---|---|
{{#fe:maths t.score | t.id}} |
这种情况导出的excel就会两列一起向右拓展,效果可参见下面的导出文件截图
3,删除行
方法一:删除空白行
book.getSheetAt(0).removeRow(book.getSheetAt(0).getRow(12))
只是清空第13行内容,行还在
方法二:这行高度设为0
book.getSheetAt(0).getRow(12).setHeight((short)0);
推荐此方法,打印出来的效果就是看不到这行,对于打印功能来说足够了
方法三:shiftRows 删除后下方单元格上移
book.getSheetAt(0).shiftRows(12,book.getSheetAt(0).getLastRowNum(),5);
api说明
sheet.shiftRows(startRow,endRow,shiftCount)
参数说明:
startRow:移动的开始行号,从0开始计算, 如果想要删除Excel中的第8行(rownum=7),那么starRow设定为7,即设定为你想删除的那行
endRow: 移动的结束行号,从0开始计算。通过startRow和endRow选定移动的范围。可以用sheet.getLastRowNum:来取得sheet的结尾行号 shiftCount 移动多少行。正数是往下移动的行数,负数是往上移动的行数
这个方法也不能实现真正的删除行
4,日期格式
{{fd:(report_date;yyyy-MM-dd)}}
report_date就是new Date()
通过这个模板命令可以直接转换成想要的日期格式
5,保留几位小数
模板命令
{{#fe:chineses {{fn:(t.score;###.00)}}}}
两个0代表保留两位小数
如果是在sql中处理,那么可以使用round函数,记住一定要加别名
select round(score,2) scoreValue from table
如果是在代码中
String.format("%.2f",(double)(i+70)).toString()
详细代码
def main(){Map<String,Object> map = new HashMap()map.put("class_code","GRADE1")map.put("model","初三")map.put("report_date",new Date())map.put("sample_num",30)map.put("chinese_standard_value",90)map.put("math_standard_value",80)// 数学测试数据def res = []for(int i=0;i<20;i++){def data = ["id":i,"score":String.format("%.2f",(double)(i+70)).toString()]res.add(data)}map.put("maths",res.subList(0,8))map.put("maths"+"2",res.subList(8,16))map.put("maths"+"3",res.subList(16,res.size()))// 语文测试数据def res2 = []for(int i=0;i<20;i++){def data = ["id":i,"hello":i+"Hello","score":(i+80.2589).toString()]res2.add(data)}map.put("chineses",res2.subList(0,8))map.put("chineses"+"2",res2.subList(8,16))map.put("chineses"+"3",res2.subList(16,res2.size()))// return mapdef filePrefix = new Date().format("yyyyMMddHHmmss")def file = resFileGetter.getByName('1690342020350导出测试.xlsx');def templateUrl = file.getAbsolutePath();String sheetName = "班级成绩报告";TemplateExportParams params = excelApi.buildTmpExportParams(templateUrl,sheetName)params.setColForEach(true);def book = ExcelExportUtil.exportExcel(params, map);def fileName = "班级成绩报告"+filePrefix+".xlsx"ExcelUtils.downLoadExcel(fileName, response, book);
}
模板文件
1690342020350导出测试.xlsx
导出文件
如下