九月999 2023-02-28 14:11 采纳率: 90%
浏览 16
已结题

poi生成exceli后如何在前端访问下载

poi生成exceli后如何在前端访问下载。我的一直没法响应下载内容,能帮忙看看什么情况嘛
前端请求

img


controller

img

service

img

生成方法

img

  • 写回答

3条回答 默认 最新

  • 程序yang 全栈领域优质创作者 2023-02-28 15:23
    关注

    对你的代码进行了一下改动,仅供参考:

    没有响应:需要在后端响应中设置正确的响应头以便前端可以成功下载文件。您需要设置响应头Content-Disposition的值为"attachment;filename=文件名.xls",其中文件名为您要下载文件的名称,同时要注意文件名需要进行URL编码。

    另外,您还需要在前端的AJAX请求中设置responseType为"blob",以便获取二进制数据流并保存为文件。

    
    @RequestMapping("/downloadTemplate")
    public ResponseEntity<byte[]> downloadTemplate(String projMxcellId, String slMxcellId) throws IOException {
        // 生成Excel
        HSSFWorkbook workbook = new HSSFWorkbook();
        this.exportExcel(workbook);
    
        // 设置响应头
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
        headers.setContentDispositionFormData("attachment", "测试模板.xls");
    
        // 返回Excel二进制数据流
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        workbook.write(out);
        return new ResponseEntity<>(out.toByteArray(), headers, HttpStatus.OK);
    }
    
    private void exportExcel(HSSFWorkbook workbook) {
        // 创建sheet等
        ...
    }
    
    $.ajax({
        url: "${ctx}/qh/eval/downloadTemplate?projMxcellId=" + projMxcellId + "&slMxcellId=" + slMxcellId,
        type: "GET",
        xhrFields: {
            responseType: "blob"
        },
        success: function(data) {
            // 下载文件
            var a = document.createElement("a");
            var url = window.URL.createObjectURL(data);
            a.href = url;
            a.download = "测试模板.xls";
            a.click();
            window.URL.revokeObjectURL(url);
        },
        error: function(xhr, status, error) {
            console.error(error);
        }
    });
    

    请注意,上述代码中的URL链接需要根据您的具体情况进行修改,以便正确获取Excel文件并进行下载。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月8日
  • 已采纳回答 2月28日
  • 创建了问题 2月28日

悬赏问题

  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!