极简版本-根据excel模版导出数据
改变自easyexcel官网 https://easyexcel.opensource.alibaba.com
第一步导入依赖:implementation 'com.alibaba:easyexcel:3.3.4'

第二步:编写代码
@PostMapping("export")
public Object export(@RequestBody JiWuLiaoPurchaseApplicationDTO jiWuLiaoPurchaseApplicationDTO,HttpServletResponse response) throws IOException {
// 模板注意 用{} 来表示你要用的变量 如果本来就有"{","}" 特殊字符 用"\{","\}"代替
// 读取模板excel文件
InputStream inputStream = getClass().getClassLoader().getResourceAsStream("excelTemplates/qingGouDan.xlsx");
if (inputStream == null) {
System.out.println("文件没有找到!");
}
// 选择导出文件的路径
String fileName = "D:\\gooinfo\\jiWuLiao\\excel\\export\\" + jiWuLiaoPurchaseApplicationDTO.getJiWuLiaoPurchaseApplicationNo() + ".xlsx";
// 这里 会填充到第一个sheet, 然后文件流会自动关闭
EasyExcel.write(fileName).withTemplate(inputStream).sheet().doFill(jiWuLiaoPurchaseApplicationDTO);
//返回给前端,前端会在此路径前拼接api/qingGouDan 通过这个路径映射访问服务器的文件
return new ResponseData(jiWuLiaoPurchaseApplicationDTO.getJiWuLiaoPurchaseApplicationNo()+".xlsx");
}
我的excel模版文件在


这里代码的主要作用是 先提取excel模版,然后选择导出到什么位置,最后填充模版以后,将导出的位置,也就是文件在系统里的相对路径返回给前端。
第三步:前端会根据返回的路径。拼接成这样一串链接 192.168.1.111:8019/api/qingoudan/xxx.xlsx,然后再请求打到后端
第四部:写一个映射的配置表。

@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
// 表示通过 ip:port/profile/** 能访问服务器D://upload目录下的所有文件
registry.addResourceHandler("/api/qingGouDan/**/").addResourceLocations("file:D:\\gooinfo\\jiWuLiao\\excel\\export\\");
}
通过前端请求携带的api/qingGouDan 打到后端的文件地址。
第五步:前端识别到文件会自动下载

模版里{}中的字段是实体类字段。
浙公网安备 33010602011771号