easyExcel后端下载文件位置的问题

在工作的过程中,遇到了一点小麻烦。

正确的写法是后端给前端一个输出流,然后前端获得输出流,在保存到用户自己的本地:

    public void ExportEnterpriseInfo(@RequestBody Map names, HttpServletResponse response) throws IOException {
        response.setContentType("application/vnd.ms-excel");
        response.setCharacterEncoding("utf-8");
        String fileName = URLEncoder.encode("企业查询结果", "UTF-8");
        response.setContentType("application/force-download");
        response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
        response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx");
        response.setHeader("Content-Type","application/octet-stream;charset=utf-8");
        /**准备数据*/
        List<ExportEnterpriseInfo> list = data(names);
        /**导入结果流*/
        EasyExcel.write(response.getOutputStream(), ExportEnterpriseInfo.class).sheet("企业查询结果").registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).doWrite(list);
    }

在这个过程中还遇到了文件名乱码的问题,这是因为postman的问题,如果是浏览器下载的话,文件名是没有问题的。
一个集坚强与自信于一身的菇凉。

使用 Ajax 请求后端下载 easyexcel 可以通过以下步骤实现: 1. 前端使用 Ajax 请求后端接口,将需要导出的数据传递给后端。 2. 后端接收到请求后,使用 easyexcel 将数据写入 Excel 文件。 3. 将生成的 Excel 文件返回给前端进行下载。 下面是一个示例代码: 前端代码: ```javascript $.ajax({ url: '/export', type: 'POST', data: { data: JSON.stringify(data) }, xhrFields:{ responseType: 'blob' }, success: function(res) { // 下载文件 var blob = new Blob([res], {type: 'application/vnd.ms-excel'}) var downloadUrl = URL.createObjectURL(blob) var a = document.createElement("a") a.href = downloadUrl a.download = 'export.xlsx' document.body.appendChild(a) a.click() URL.revokeObjectURL(downloadUrl) } }) ``` 后端代码(使用 Spring Boot 作为示例): ```java @PostMapping("/export") public void export(@RequestParam("data") String data, HttpServletResponse response) { try { // 将数据写入 Excel 文件 OutputStream out = response.getOutputStream(); EasyExcel.write(out, DemoData.class).sheet("Sheet1").doWrite(dataList); // 设置响应头,告诉浏览器下载文件 response.setContentType("application/vnd.ms-excel"); response.setHeader("Content-Disposition", "attachment;filename=export.xlsx"); response.flushBuffer(); } catch (IOException e) { e.printStackTrace(); } } ``` 需要注意的是,由于是后端下载文件,需要在响应头中设置 Content-Disposition 为 attachment,告诉浏览器下载文件,而不是直接打开。同时,需要将响应类型设置为 application/vnd.ms-excel,告诉浏览器这是 Excel 文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

淡雅的惆怅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值