EasyExcel ExcelWriter.finish()所需要注意的地方
1 多个sheet页导出时
碰到多个sheet页导出时,不能写入一个sheet页数据就finish()一下。因为finish()代表整个Excel文件写数据结束。
//sheet页名称列表 List<String> sheetNameList = new ArrayList<>(); //sheet页数据列表 List<List<List<Object>>> sheetList = new ArrayList<>(); response.setHeader("Content-disposition", "attachment;filename*=1.xlsx"); //设置类型,扩展名为.xls response.setContentType("application/vnd.ms-excel"); try { // 这里 需要指定写用哪个class去写,然后写到第一个sheet 然后文件流会自动关闭 ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).build(); //多个sheet页数据导出 for (int i = 0; i < sheetNameList.size() && i < sheetList.size(); i++) { WriteSheet writeSheet1 = EasyExcel.writerSheet(i, sheetNameList.get(i)).build(); excelWriter.write(sheetList.get(i), writeSheet1); excelWriter.finish(); } response.flushBuffer(); } catch (Exception e) { e.printStackTrace(); }
正确做法应该是多个sheet页填充数据结束之后,使用finish()。
//sheet页名称列表 List<String> sheetNameList = new ArrayList<>(); //sheet页数据列表 List<List<List<Object>>> sheetList = new ArrayList<>(); response.setHeader("Content-disposition", "attachment;filename*=1.xlsx"); //设置类型,扩展名为.xls response.setContentType("application/vnd.ms-excel"); try { // 这里 需要指定写用哪个class去写,然后写到第一个sheet 然后文件流会自动关闭 ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).build(); //多个sheet页数据导出 for (int i = 0; i < sheetNameList.size() && i < sheetList.size(); i++) { WriteSheet writeSheet1 = EasyExcel.writerSheet(i, sheetNameList.get(i)).build(); excelWriter.write(sheetList.get(i), writeSheet1); } excelWriter.finish(); response.flushBuffer(); } catch (Exception e) { e.printStackTrace(); }
上一篇:
Python 安装包管理工具 pip
下一篇:
Eclipse:全局搜索和更替