需要引用的插件 myxlsx.core.min.js
FileSaver.min.js
该atob函数将base64编码的字符串解码为一个新字符串,其中包含二进制数据每个字节的字符。
const byteCharacters = atob(b64Data);
每个字符的代码点(charCode)都是字节的值。我们可以通过使用.charCodeAt字符串中每个字符的方法应用它来创建一个字节值数组。
const byteNumbers = new Array(byteCharacters.length);for (let i = 0; i < byteCharacters.length; i++) {
byteNumbers[i] = byteCharacters.charCodeAt(i);}
您可以将此字节值数组转换为实际类型的字节数组,方法是将其传递给Uint8Array构造函数。
const byteArray = new Uint8Array(byteNumbers);
这反过来可以Blob通过将其包装在数组中并将其传递给Blob构造函数来转换为a 。
const blob = new Blob([byteArray], {type: contentType});
上面的代码有效。然而,通过处理byteCharacters较小的切片而不是一次性处理,可以稍微改善性能。在我的粗略测试中,512字节似乎是一个很好的切片大小。这给了我们以下功能。
import React from “react”;
import ReactDOM from “react-dom”;
import fileSaver from ‘file-saver’
import Common from “@utils/common”;
// 全局调用名称为 fileUtil.方法名