若依框架改进导出功能,实现读取Excel模板,填写数据并导出Excel。
后端代码:
/**
* 没用,导出测试用
* @param response
*/
@PreAuthorize("@ss.hasPermi('vehicle:query:list')")
@GetMapping("/download")
public void download(HttpServletResponse response){
try {
// 创建文件输入流对象 读取模板
ClassPathResource classPathResource = new ClassPathResource("template"+File.separator+"regulatoryReport"+File.separator+"three"+File.separator+" 模板.xls");
InputStream inputStream = classPathResource.getStream();
// 创建工作簿对象
Workbook workbook = WorkbookFactory.create(inputStream);
// 获取指定名称的工作表对象并根据需求填写数据
Sheet sheet = workbook.getSheet("Sheet1");
Row row = sheet.getRow(5);
//填写数据
row.getCell(5).setCellValue("Hello!!!");
response.setCharacterEncoding("UTF-8");
response.setHeader("content-Type", "application/vnd.ms-excel");
response.setHeader("Content-Disposition",
"attachment;filename=" + URLEncoder.encode("文件.xls", "UTF-8"));
OutputStream out = response.getOutputStream();
workbook.write(out);
//关闭工作簿和文件输入流
workbook.close();
inputStream.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
前端代码(前端通过导出按钮添加单击函数触发导出方法):
downloadwuyong(){
this.showMsg({
content: '是否确认下载导入模板?',
infoType: 'info',
onOk: () => {
downloadByBlob('/vehicle/query/download')
}
})
},
前端是添加了一个提示框,调用了若依框架自带的downloadByBlob()即可实现,简单方便。