java导出Excel,前端JS如何处理

遇到了一次java的接口已经正常的返回了二进制的文件流的形式,但是前端不论怎样都无法触发下载提示,也无法下载文件的情况

首先确认的是,不可以使用ajax进行触发这个导出Excel接口,因为ajax接收的返回都是字符串,因此也无法将二进制的文件流转成文件进行下载,在这里我使用的是模拟表单的形式进行的触发接口和导出操作.

    var form = $("<form>");
    form.attr('style', 'display:none');
    form.attr('target', '');
    form.attr('method', 'get');
    //form.attr('id', 'exportExcel');
    form.attr('action', 'export/flow.do');
    var input1 = $('<input>');
    input1.attr('type', 'hidden');
    input1.attr('name', 'ids');
    input1.attr('value', ids);
    
    $('body').append(form);
    form.append(input1);
    
    form.submit();

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在后台使用 Java 导出 Excel 文件时,可以使用 Apache POI 库来创建和写入 Excel 文件。具体步骤如下: 1. 创建工作簿,并创建工作表对象 ```java Workbook workbook = new HSSFWorkbook(); // 创建工作簿对象,支持xls格式 Sheet sheet = workbook.createSheet("Sheet1"); // 创建工作表对象 ``` 2. 编写数据写入逻辑,将数据写入到工作表中 ```java Row row = sheet.createRow(0); // 创建第一行对象 // 写入第一行数据 Cell cell1 = row.createCell(0); cell1.setCellValue("姓名"); Cell cell2 = row.createCell(1); cell2.setCellValue("年龄"); Row row2 = sheet.createRow(1); // 创建第二行对象 // 写入第二行数据 Cell cell3 = row2.createCell(0); cell3.setCellValue("张三"); Cell cell4 = row2.createCell(1); cell4.setCellValue(25); ``` 3. 将写入的数据输出到文件中 ```java OutputStream out = response.getOutputStream(); // 获取响应输出流 response.reset(); response.setHeader("Content-disposition", "attachment; filename=example.xls"); // 设置文件名 response.setContentType("application/msexcel"); // 设置文件类型 workbook.write(out); // 将工作簿写入输出流 out.flush(); // 刷新缓冲区 out.close(); // 关闭输出流 ``` 在前端页面中,可以使用 `XMLHttpRequest` 或者 `fetch` API 发起请求,获取 Excel 文件。获取到文件后,可以通过 Blob 对象将 Excel 文件转换为 URL,然后通过 a 标签下载。示例代码如下: ```javascript // 使用 fetch API 发起请求 fetch('/export/excel').then(function(response) { return response.blob(); }).then(function(blob) { // 将文件转换为 URL var url = window.URL.createObjectURL(blob); // 创建 a 标签,设置下载链接和文件名,模拟下载 var link = document.createElement('a'); link.href = url; link.download = 'example.xls'; link.click(); }); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值