Base64转成Blob导出Excel

记一下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)