String template = "C:\\Users\\4621236428\\Desktop\\abc.xlsx"; String fileName = "C:\\Users\\4621236428\\Desktop\\example1.xlsx"; // 创建 Excel 写入器 ExcelWriterBuilder writerBuilder = EasyExcel.write(fileName).withTemplate(template);创建excel能先创建出多个sheet页都是同一个模板
时间: 2023-08-05 18:07:14 浏览: 138
非常抱歉之前的回答有误。根据你的需求,你希望在创建 Excel 文件时能够先创建多个 Sheet 页,且这些 Sheet 页都使用同一个模板。
根据 EasyExcel 的文档,使用 `withTemplate()` 方法指定模板文件时,会将模板的格式应用到所有的 Sheet 页。因此,如果你希望创建多个 Sheet 页并且这些 Sheet 页都使用同一个模板,可以在循环之前先使用 `write()` 方法创建 Excel 写入器,然后在循环中为每个 Sheet 页填充数据。
修改后的代码示例如下:
```java
List<PostAllVo> list = postConfigurationService.selectList(postConfiguration);
String template = "C:\\Users\\4621236428\\Desktop\\abc.xlsx";
String fileName = "C:\\Users\\4621236428\\Desktop\\example1.xlsx";
// 创建 Excel 写入器
ExcelWriterBuilder writerBuilder = EasyExcel.write(fileName);
ExcelWriter excelWriter = writerBuilder.build();
try {
for (PostAllVo postAllVo : list) {
String orgName = postAllVo.getOrgName();
Integer total = postAllVo.getTotal();
List<PostPeopleVo> postPeopleVoList = postAllVo.getPostPeopleVoList();
List<PostConfigurationExcel> postConfigurationExcelList = postConfigurationService.exportData(total, postPeopleVoList);
// 创建 sheet 页
WriteSheet writeSheet = EasyExcel.writerSheet(orgName).withTemplate(template).build();
// 填充数据到 Sheet
FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.FALSE).build();
excelWriter.fill(postConfigurationExcelList, fillConfig, writeSheet);
Map<String, Object> map = MapUtils.newHashMap();
map.put("orgName", orgName);
excelWriter.fill(map, writeSheet);
}
} catch (Exception e) {
throw new Exception(e.getMessage());
} finally {
if (excelWriter != null) {
excelWriter.finish();
}
}
```
通过这种方式,你可以先创建多个 Sheet 页,并且每个 Sheet 页都使用同一个模板进行填充数据。希望这次能够满足你的需求!如果还有其他问题,请随时提问。
阅读全文