- 有导入导出功能的时候,避免用户导入数据有误,提供了excel模板下载。用户直接在系统导出的excel模板中填写数据,再导入该excel。
- 例如下图excel 提供前后台所有导出代码
3. 代码
3.1 前台
(1)按钮
<el-button type='success' icon="el-icon-download" @click="downTemplate"> 模板下载
</el-button>
(2) js方法
downTemplate(){
// 调用api接口
service.exportTemplate().then(
res => {
if (res.data) {
const content = res.data
const blob = new Blob([content]);
if ("download" in document.createElement("a")) {
const link = document.createElement("a");
// 文件名
link.download = "excel模板.xlsx"
link.style.display = "none"
link.href = URL.createObjectURL(blob)
document.body.appendChild(link)
link.click()
URL.revokeObjectURL(link.href)
document.body.removeChild(link)
} else {
navigator.msSaveBlob(blob, fileName)
}
}
}
)
};
(3)api接口
exportTemplate: (date) => {
return request({
url:'/aaaa/exportTemplate', // 路由
method: 'post',
ResponseType:'blob' // 这个不要写错
})
}
3.2 后台
1. controller层
@GetMapping("exportTemplate")
public void exportTemplate(HttpServletResponse response) throw Exception{
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("UTF-8");
String filename = URLEncoder.encode("导出excel模板的文件名称", "utf-8")
response.setHeader("Content-disposition","attachment;filename = " + filename + ".xlsx")
// 调用服务层接口
aaaaservice.exportTemplate(response)
-
service 接口层
void exportTemplate(HttpServletResponse response)
-
service实现层
@Override public void exportTemplate(HttpServletResponse response){ SXSSFWorkbook workbook = new SXSSFWorkbook(100); Sheet xssfSheet = workbook.createSheet("导出excel模板的文件名称"); // 创建第一行 Row row = xssfSheet.createRow(0); // 创建列(字段过多,建议使用循环) Cell xssfCell = row.createCell(0); xssfCell.setCellValue("姓名"); Cell xssfCell = row.createCell(1); xssfCell.setCellValue("性别"); Cell xssfCell = row.createCell(2); xssfCell.setCellValue("住址"); String uuid = UUID.randomUUID().toString(); // 设置列宽度自适应 for(int i=0; i<3; i++){ xssfSheet.autoSizeColumn(i) xssfSheet.setColumWidth(i,xssfSheet.getColumnWidth(i)*7/4); // 可以自己调整 } // 写excel文件 try{ workbook.write(response.getOutputStream()); }catch(IOException e){ e.printStackTrace(); } }