欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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。比较简单,大部分文章都能找到。这里就不贴代码了。

相关标签: 导出Excel