poi4.0支持了sheet clone功能,这个为我们的一个模板导出N个sheet提供了基础支持,鉴于此该功能面世,使用也相当简单
/**
* 导出文件通过模板解析只有模板,没有集合
* 每个sheet对应一个list,按照数量进行导出排序,key是sheet的NUM
* @param params
* 导出参数类
* @param map
* 模板集合
* @return
*/
public static Workbook exportExcelClone(Map<Integer, List<Map<String, Object>>> map,
TemplateExportParams params) {
return new ExcelExportOfTemplateUtil().createExcelCloneByTemplate(params, map);
}
把自己需要导出很多份的数据组装到list里面统一个模板的map放到一个list,然后就是原始的模板sheetIndex,这样对比下来给你组装成你想要的,具体可以参考下demo
@Test
public void cloneTest() throws Exception {
TemplateExportParams params = new TemplateExportParams(
"doc/exportTemp.xls", true);
params.setHeadingRows(2);
params.setHeadingStartRow(2);
params.setStyle(ExcelStyleType.BORDER.getClazz());
List<Map<String, Object>> numOneList = new ArrayList<>();
for (int i = 0; i < 10; i++) {
Map<String, Object> map = new HashMap<String, Object>();
//sheet 1
map.put("year", "2013" + i);
map.put("sunCourses", list.size());
Map<String, Object> obj = new HashMap<String, Object>();
map.put("obj", obj);
obj.put("name", list.size());
// sheet 2
map.put("month", 10);
Map<String, Object> temp;
for (int j = 1; j < 8; j++) {
temp = new HashMap<String, Object>();
temp.put("per", j * 10 + "---" + i);
temp.put("mon", j * 1000);
temp.put("summon", j * 10000);
map.put("i" + j, temp);
}
map.put(SHEET_NAME, "啊啊测试SHeet" + i);
numOneList.add(map);
}
List<Map<String, Object>> numTowList = new ArrayList<>();
for (int i = 0; i < 15; i++) {
Map<String, Object> oneMap = new HashMap<String, Object>();
oneMap.put("list", list);
oneMap.put(SHEET_NAME, "第二个测试SHeet" + i);
numTowList.add(oneMap);
}
// 把两个list 数据 put到对应的模板KEY 下面去
Map<Integer, List<Map<String, Object>>> realMap = new HashMap<>();
realMap.put(1, numOneList);
realMap.put(2, numTowList);
Workbook book = ExcelExportUtil.exportExcelClone(realMap, params);
File savefile = new File("D:/excel/");
if (!savefile.exists()) {
savefile.mkdirs();
}
FileOutputStream fos = new FileOutputStream("D:/excel/exportCloneTemp.xls");
book.write(fos);
fos.close();
}
作者:悟耘信息 创建时间:2020-04-09 15:18
更新时间:2022-09-04 22:15
更新时间:2022-09-04 22:15