Base64转成Blob导出Excel
程序员文章站
2024-03-20 22:15:04
...
记一下Base64转成Blob导出Excel
做了一个页面导出Excel的功能,后端用easypoi,然后传送base64到前端,前端通过转换后导出Excel。
后端部分代码
Workbook workbook = reportUtil.exportExcel();
ByteArrayOutputStream out = new ByteArrayOutputStream();
workbook.write(out);
// 文件转base64
byte [] base64 = out.toByteArray();
//返回的base64字符串
String content =new String(Base64.getEncoder().encode(base64));
前端部分代码
(点击导出按钮,axios请求)
content 是后端发送的数据
// 使用atob方法解码base64
var raw = window.atob(content);
// 创建一个存储解码后数据的数组
var uInt8Array = new Uint8Array(raw.length);
// blob只能接收二进制编码,需要讲base64转为二进制再塞进去
for (var i = 0; i < raw.length; ++i) {
uInt8Array[i] = raw.charCodeAt(i);
}
// 这里给了一个返回值,在别的方法掉用传入base64编码就可以得到转化后的blob
const link = document.createElement('a')
const blob = new Blob([uInt8Array], { type: 'application/vnd.ms-excel' })
link.style.display = 'none'
link.href = URL.createObjectURL(blob)
//设置下载的Excel表名
link.setAttribute('download', '表名')
document.body.appendChild(link)
link.click()
document.body.removeChild(link)
还有另外一种直接返回文件流导出Excel。比较简单,大部分文章都能找到。这里就不贴代码了。
下一篇: C++:内联函数(inline)