vue代码:
export function exportExcel(id) { return request({ url: '/admin/project/download/' + id, method: 'get', responseType: 'blob' //二进制流 })};exportExcel(row) { exportExcel(row.projectId).then(res => { var blob = new Blob([res.data], {type: 'application/vnd.ms-excel;charset=utf-8'}) var url = window.URL.createObjectURL(blob); var aLink = document.createElement("a"); aLink.style.display = "none"; aLink.download = row.projectName + '报名表.xlsx'; aLink.href = url; document.body.appendChild(aLink) aLink.click() })}
excel模板:
注意list中是{.xxx},其他地方是{xxx}
![42a1fa8ffb400143a5cf5b92c953cc06.png](https://i-blog.csdnimg.cn/blog_migrate/751482f9d850fc76b6b12aa5e20f9b44.jpeg)
java代码:
@Datapublic class DownloadData {private String serialNumber;private String teacherNum;private String realName;private String sex;private String orgName;private String subjectTeaching;private String phoneNumber;private String idNum;}List list = ...;String templateFileName = FileUtil.getPath() + "excel" + File.separator + "complex.xlsx";response.setContentType("application/vnd.ms-excel");response.setCharacterEncoding("utf-8");// 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系String fileName = null;try {fileName = URLEncoder.encode(UUID.randomUUID().toString(), "UTF-8");} catch (UnsupportedEncodingException e) {e.printStackTrace();}response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");ServletOutputStream outputStream = null;try {outputStream = response.getOutputStream();Collections.reverse(list);ExcelWriter excelWriter = EasyExcel.write(outputStream, DownloadData.class).withTemplate(templateFileName).build();WriteSheet writeSheet = EasyExcel.writerSheet().build();FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build();excelWriter.fill(list, fillConfig, writeSheet);// 替换表头中的{projectName}, 注意这里没有.Map titleMap = new HashMap<>(1);Project project = projectService.getById(projectId);titleMap.put("projectName", project.getProjectName());excelWriter.fill(titleMap, writeSheet);excelWriter.finish();} catch (IOException e) {e.printStackTrace();} finally {if (outputStream !=null) {try {outputStream.close();} catch (IOException e) {e.printStackTrace();}}}