需求:有时生成excel之后,不需要直接返回流下载,需要转为文件保存到服务器中。
代码示例
/**
* 生成文件并保存到文件服务
* @return
* @throws IOException
*/
@Override
public Long excelTransferFile() throws IOException {
// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 文件生成准备 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
// 获取模版文件
ClassPathResource classPathResource = new ClassPathResource("xls_template/file_template_fixed.xlsx");
InputStream fis = classPathResource.getInputStream();
// 保存写入的数据流
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
try {
// 设置excel输出策略
ExcelWriter excelWriter = EasyExcel
.write(outputStream, InternalSolutionFillDTO.class)
.withTemplate(fis)
.build();
// 不需要直接返回流
// out.flush();
// out.close();
/**
* 转为文件 MockMultipartFile
*/
String fileName = "文件"+System.currentTimeMillis()+".xlsx";
String originName = "file_"+System.currentTimeMillis()+".xlsx";
MockMultipartFile customerFile = new MockMultipartFile(fileName,originName
, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
, outputStream.toByteArray());
// 保存至文件服务的代码 略...
} catch (Exception e) {
log.error("文件生成,方法异常>>>>>>>>>>>>>>", e);
} finally {
fis.close();
}
return null;
}