Vue项目导出Excel(Blob篇)

本文详细介绍了如何在前端使用axios获取后台返回的二进制文档流,并利用Blob对象配合file-saver库实现文件下载,重点讲解了Blob对象的使用和不同MIME类型的对应。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

日常工作中,你常用到的下载方式有哪些?

①. 后台返回生成好的文档地址,前端通过 a 链接即可下载;
②. 后台返回二进制文档流,前端解析下载。


接下来,我们就聊聊第二种方式

开始之前,我们先看一下二进制流长什么样子⬇️

图1
你没看错,你不认识,我也不认识,但这完全不影响我们接下来的操作。

我们这里会用到Blob对象,先来简单了解一下Ta

Blob 对象表示一个不可变、原始数据的类文件对象。它的数据可以按文本或二进制的格式进行读取,也可以转换成 ReadableStream 来用于数据操作。

在发起请求时,需指定 responseType
// 以get请求为例
axios.get(url, {  
	params, 
	responseType: "blob" 
})
保存文件的方法
// download.js文件
// 事先安装 file-saver 依赖
let FileSaver = require("file-saver");

export default {
  download: (dataBlob, fileName) => {
    FileSaver.saveAs(dataBlob, fileName);
  }
};
关键的一步来了
import Download from "../assets/javascript/download";
...
let blob = new Blob([res], { // res 即图1后台返回的内容
  type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" // 这里很关键
});
Download.download(
  blob,
  `${this.datasetObj.Title}.${this.downloadType}`
);

大功告成!来预览一下导出的Excel

在这里插入图片描述

这个结果,你总认识了吧!


附:

Blob.type 表明该 Blob 对象所包含数据的 MIME 类型。如果类型未知,则该值为空字符串。

常见MIME类型:

扩展名文档类型MIME 类型
.aacAAC audioaudio/aac
.csvComma-separated values (CSV)text/csv
.docMicrosoft Wordapplication/msword
.docxMicrosoft Word (OpenXML)application/vnd.openxmlformats-officedocument.wordprocessingml.document
.gifGraphics Interchange Format (GIF)image/gif
.jpeg / .jpgJPEG imagesimage/jpeg
.jsonJSON formatapplication/json
.pngPortable Network Graphicsimage/png
.pdfAdobe Portable Document Format (PDF)application/pdf
.xlsMicrosoft Excelapplication/vnd.ms-excel
.xlsxMicrosoft Excel (OpenXML)application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
.zipZIP archiveapplication/application/zip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值