【发布时间】:2016-05-01 19:16:37
【问题描述】:
我对这个问题有类似的问题(Javascript: Exporting large text/csv file crashes Google Chrome):
我正在尝试保存 excelbuilder.js 的 EB.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: Exporting large text/csv file crashes 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打开。
谢谢!
【问题讨论】:
标签: javascript xlsx bloburls