easypoi 单个excel返回多个sheet代码
1.easypoi 处理excel
1.读取excel内容到内存(可以读取一对一以及一对多数据)
2.lambda分组读到的数据, 根据key设置sheet名称
public void importExcel(HttpServletResponse response) throws Exception {
createRow();
response.setHeader("content-Type", "application/x-xls");
// 下载文件的默认名称
response.setHeader("Content-Disposition", "attachment;filename=work.xls");
response.setContentType("application/vnd.ms-excel;charset=utf-8");
// 加载Excel文件
FileInputStream inputStream = new FileInputStream("D:\\oa\\工作日报.xlsx");
ImportParams params = new ImportParams();
// 读取第几个sheet
params.setStartSheetIndex(0);
// 头部占几行
params.setHeadRows(2);
List<ExcelColumn> resultList = ExcelImportUtil.importExcel(inputStream, ExcelColumn.class,params);
//resultList.forEach(System.out::println);
//根据部门分组
Map<String, List<ExcelColumn>> groupMap = resultList.stream().collect(Collectors.groupingBy(ExcelColumn::getName));
List<Map<String, Object>> sheetsList = new ArrayList<>();
for(String key:groupMap.keySet()){
ExportParams deptExportParams = new ExportParams();
//System.out.println(key+":" +groupMap.get(key).size());
//根据key获取List<Entity>
//System.out.println(groupMap.get(key));
// 设置sheet得名称
deptExportParams.setSheetName(key);
Map<String, Object> objectMap = new HashMap<>();
objectMap.put("title", deptExportParams);
// 模版导出对应得实体类型
objectMap.put("entity", ExcelColumn.class);
// sheet中要填充得数据
objectMap.put("data", groupMap.get(key));
sheetsList.add(objectMap);
}
Workbook workbook = ExcelExportUtil.exportExcel(sheetsList, ExcelType.HSSF);
ServletOutputStream outputStream = response.getOutputStream();
workbook.write(outputStream);
workbook.close();
outputStream.flush();
outputStream.close();
inputStream.close();
}
2.easypoi 导出压缩文件
1.单个excel返回多个excel,每个excel多个sheet代码
public void export(HttpServletResponse response) throws IOException {
createRow();
try {
String fileName = "批量导出.zip"