之前本来做好的模板下载只是个半成品,这回我尊敬的领导又提出了新要求 需要下载模板两个sheet 第一张空表 第二张从某资源池中获取并呈现数据,为了能有更好的客户体验,辛苦一点儿也是应该的,不说了 上代码
@GetMapping("/download")
@ResponseBody
@RequiresPermissions("o:x:download")
public void exportPbxcjhppExcel( HttpServletRequest request ,HttpServletResponse response){
String fileName = "e.xlsx";
String filePath = apiProperties.getFilePath()+Const.FILEPATHFILE+fileName; //上传路径
NewExcelExport excelExport = null;
try{
excelExport = new NewExcelExport();
OutputStream out = new FileOutputStream(filePath);
String[] sheet1 = { "客户", "描述","份额" ,"预算","线","所属","备注"};
List<List<String>> Data1 = new ArrayList<List<String>>();
String[] sheet2 = { "客户名称(客户资源池内查找)"};
List<List<String>> data2 = Lists.newArrayList();
List<String> list = xiaoshouService.getCustomerPool();
for (String s : list) {
List<String> rowData = new ArrayList<>();
rowData.add(s);
waterData.add(rowData);
}
//3、生成格式是xlsx可存储103万行数据,如果是xls则只能存不到6万行数据
XSSFWorkbook workbook = new XSSFWorkbook();
//第一个表格内容
excelExport.exportExcel(workbook, 0, "sheet1", sheet1, Data1, out);
//第二个表格内容
excelExport.exportExcel(workbook, 1, "客户名称", sheet2, data2, out);
filePath = java.net.URLDecoder.decode(filePath,"utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("multipart/form-data");
response.setHeader("Content-Disposition", "attachment;fileName=" + setFileDownloadHeader(request, fileName));
workbook.write(out);
FileUtils.writeBytes(filePath, response.getOutputStream());
//将所有的数据一起写入,然后再关闭输入流。
out.close();
}catch (Exception e){
e.printStackTrace();
}
}