文档流的文件导出

项目中最最常见的下载方法是后台返回一个文件地址,执行跳转即可,location.href = 'url'。

导出数据表格数据,后台返回的是二进制文档流格式的时候,我们要怎么处理呢?如图:

之前也遇到过从后台传递过来的图片是二进制格式的文档流,需要将文档流转化为url格式,将图片显示出来,结果没有实现,后台自己处理的,哈哈哈哈。。。这次必须研究出来,上代码吧!

拿到文档流(res.data)后,将数据转化为Blob实例,

执行 URL.createObjectUrl(Blob) 方法生成 url 地址,

再创建一个隐藏的a标签,

设置a标签的href属性为刚才得到的 url 地址,

download属性为下载后文件的名字,

再执行a标签的点击,

下载后移除 a 标签

需要注意:拿到respone数据的data类型是有要求的,必须是这个Blob类型(如下1图),如果是图2格式,则文件导出后格式出错,不能正常预览。

为了得到 Blob 格式的 data 值,这就要求我们在发送数据请求时,写入 responseType: 'blob',写法如下图3

实现文档流导出Excel表格的方法有很多,这里介绍一种比较简单的方法: 1. 引入Apache POI库,这是一个Java处理Microsoft Office文档的开源库,包括Excel、Word和PowerPoint等。 2. 创建工作簿对象Workbook和工作表对象Sheet。 3. 在工作表中创建行对象Row和单元格对象Cell。 4. 将数据写入单元格中。 5. 将工作簿写入输出中,输出到客户端浏览器。 示例代码如下: ```java // 创建工作簿对象 Workbook workbook = new XSSFWorkbook(); // 创建工作表对象 Sheet sheet = workbook.createSheet("Sheet1"); // 创建行对象 Row row = sheet.createRow(0); // 创建单元格对象,并设置值 Cell cell = row.createCell(0); cell.setCellValue("姓名"); cell = row.createCell(1); cell.setCellValue("年龄"); // 写入数据 for(int i=1; i<=10; i++){ row = sheet.createRow(i); cell = row.createCell(0); cell.setCellValue("张三" + i); cell = row.createCell(1); cell.setCellValue(i); } // 输出到客户端浏览器 response.setContentType("application/vnd.ms-excel"); response.setHeader("Content-disposition", "attachment;filename=test.xlsx"); OutputStream ouputStream = response.getOutputStream(); workbook.write(ouputStream); ouputStream.flush(); ouputStream.close(); ``` 以上代码中,response是HttpServletResponse对象,用于向客户端浏览器输出Excel文件。在输出前需要设置Content-type为application/vnd.ms-excel,Content-disposition为attachment,并指定文件名。最后将Workbook写入输出中即可。 注意:以上代码仅供参考,具体实现方式需要根据实际需求进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值