如何将.xlsx数据保存为Blob文件

gm2008

我对此问题有一个类似的问题(Javascript:导出大文本/ csv文件使Google Chrome崩溃):

我想节省创建的数据excelbuilder.jsEB.createFile()功能。如果我将文件数据作为href链接属性值,它将起作用。但是,当数据量很大时,它将使Chrome浏览器崩溃。代码如下:

//generate a temp <a /> tag
var link = document.createElement("a");
link.href = 'data:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64,' + encodeURIComponent(data);
link.style = "visibility:hidden";
link.download = fileName;

document.body.appendChild(link);
link.click();
document.body.removeChild(link);

我使用excelbuilder.js创建数据的代码如下:

var artistWorkbook = EB.createWorkbook();
var albumList = artistWorkbook.createWorksheet({name: 'Album List'});

albumList.setData(originalData); 

artistWorkbook.addWorksheet(albumList);

var data = EB.createFile(artistWorkbook);

正如类似问题(Javascript:导出大文本/ csv文件使Google Chrome崩溃的答案所建议的那样,需要创建一个Blob。

我的问题是,文件中保存的内容不是可以由Excel打开的有效Excel文件。我用来保存的代码blob如下:

var blob = new Blob(
    [data],
    {type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64,"}
);

// Programatically create a link and click it:
var a = document.createElement("a");
a.href = URL.createObjectURL(blob);
a.download = fileName;
a.click();

如果我将[data]上述代码中的替换为,则[Base64.decode(data)]保存的文件中的内容看起来更像预期的excel数据,但仍然无法通过Excel打开。

谢谢!

罗恩·T

我和你有同样的问题。事实证明,您需要将Excel数据文件转换为ArrayBuffer。

var blob = new Blob([s2ab(atob(data))], {
    type: ''
});

href = URL.createObjectURL(blob);

s2ab(字符串到数组缓冲区)方法(我从https://github.com/SheetJS/js-xlsx/blob/master/README.md获得)是:

function s2ab(s) {
  var buf = new ArrayBuffer(s.length);
  var view = new Uint8Array(buf);
  for (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
  return buf;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Aerospike:将数据保存为blob还是使用“ bins”?

来自分类Dev

如何将CSV文件保存为变量

来自分类Dev

如何将外壳屏幕保存为冗长的文件?

来自分类Dev

如何使用PHPExcel将xlsx文件上的可打印区域保存为PDF

来自分类Dev

将文件夹中的.xlsx文件保存为.csv文件

来自分类Dev

如何将列表框中的文件保存为.txt文件?

来自分类Dev

每次播放 tts 时如何将音频文件保存为新文件?

来自分类Dev

将SXSSF保存为.xls文件

来自分类Dev

将连接保存为CSV文件

来自分类Dev

将 javaRDD 保存为 XML 文件

来自分类Dev

如何将原始图像数据保存为png图像?

来自分类Dev

如何将数据流保存为mp3格式?

来自分类Dev

如何将画布图像保存为数据库并生成 url

来自分类Dev

如何将 Cloud Firestore 中的异步数据保存为变量?

来自分类Dev

如何将缩略图保存为JPEG文件?

来自分类Dev

如何将已编译的JasperReport保存为文件中的.jasper

来自分类Dev

如何将mathematica文件的输出保存为其他格式,然后在以后使用?

来自分类Dev

如何将scipy树状图保存为高分辨率文件?

来自分类Dev

如何将包含TPngImage的TImage保存为位图文件?

来自分类Dev

如何将急切执行的模型转换为静态图并保存为.pb文件?

来自分类Dev

如何将mathematica文件的输出保存为其他格式,然后在以后使用?

来自分类Dev

如何将Highcharts自动保存为特定文件夹中的图像

来自分类Dev

如何将xls {,x}保存为csv文件,以便公式显示为文本?

来自分类Dev

如何将字符串保存为FormFile格式的文件

来自分类Dev

如何将单词列表和这些单词在句子中的位置保存为文件

来自分类Dev

如何将jsoup文档保存为文本文件

来自分类Dev

如何将 Textboxt.Text 保存为文件名?

来自分类Dev

如何将目录中的文件名保存为字典的键?

来自分类Dev

如何保存为玉器文件?

Related 相关文章

  1. 1

    Aerospike:将数据保存为blob还是使用“ bins”?

  2. 2

    如何将CSV文件保存为变量

  3. 3

    如何将外壳屏幕保存为冗长的文件?

  4. 4

    如何使用PHPExcel将xlsx文件上的可打印区域保存为PDF

  5. 5

    将文件夹中的.xlsx文件保存为.csv文件

  6. 6

    如何将列表框中的文件保存为.txt文件?

  7. 7

    每次播放 tts 时如何将音频文件保存为新文件?

  8. 8

    将SXSSF保存为.xls文件

  9. 9

    将连接保存为CSV文件

  10. 10

    将 javaRDD 保存为 XML 文件

  11. 11

    如何将原始图像数据保存为png图像?

  12. 12

    如何将数据流保存为mp3格式?

  13. 13

    如何将画布图像保存为数据库并生成 url

  14. 14

    如何将 Cloud Firestore 中的异步数据保存为变量?

  15. 15

    如何将缩略图保存为JPEG文件?

  16. 16

    如何将已编译的JasperReport保存为文件中的.jasper

  17. 17

    如何将mathematica文件的输出保存为其他格式,然后在以后使用?

  18. 18

    如何将scipy树状图保存为高分辨率文件?

  19. 19

    如何将包含TPngImage的TImage保存为位图文件?

  20. 20

    如何将急切执行的模型转换为静态图并保存为.pb文件?

  21. 21

    如何将mathematica文件的输出保存为其他格式,然后在以后使用?

  22. 22

    如何将Highcharts自动保存为特定文件夹中的图像

  23. 23

    如何将xls {,x}保存为csv文件,以便公式显示为文本?

  24. 24

    如何将字符串保存为FormFile格式的文件

  25. 25

    如何将单词列表和这些单词在句子中的位置保存为文件

  26. 26

    如何将jsoup文档保存为文本文件

  27. 27

    如何将 Textboxt.Text 保存为文件名?

  28. 28

    如何将目录中的文件名保存为字典的键?

  29. 29

    如何保存为玉器文件?

热门标签

归档