[英]Using ExcelBuilder.js with FileSaver.js
在我的应用程序中,我无法使用Downloadify(由ExcelBuilder.js推荐),因此我尝试使用FileSaver.js下载.xlsx文件。
我都尝试过
var blob = new Blob([builder.createFile(basicReport.prepare())],{
type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base65"
})
saveAs(blob, "myXLSX.xlsx");
和
var blob = new Blob([builder.createFile(basicReport.prepare())],{
type: "application/vnd.ms-excel;charset=charset=utf-8"
})
saveAs(blob, "myXLSX.xlsx");
我可以下载文件,并尝试使用.xls和.xlsx扩展名。 Excel无法打开.xlsx,如果我尝试打开.xlsx,它将打开,但数据无法解释。
2017年9月14日更新:对此有一个更简单的代码,您可以在https://github.com/eligrey/FileSaver.js/issues/262#issuecomment-256602092上看到。 您可以删除new Blob
行,然后使用:
ExcelBuilder.Builder.createFile(workbook, {type:'blob'})
.then(function(blob) {
FileSaver.saveAs(blob, 'File.xlsx');
});
今天我遇到了同样的问题,但是使用了FileSaver.js的Angular版本。 我无意间解决了它。 下列代码可以正常工作:
ExcelBuilder.Builder.createFile(workbook, {type:'blob'})
.then(function(blob) {
var data = new Blob([blob], {type:'base64'});
FileSaver.saveAs(data, 'File.xlsx');
});
我的库"angular-file-saver": "1.1.2"
和"excel-builder-js": "https://github.com/rodrigosaling/excel-builder.js.git#master"
excel-builder.js#2.0.2
。
一些澄清(因为它不是100% 无意的 ):
{type:'blob'}
来自https://github.com/stephenliberty/excel-builder.js/issues/4#issuecomment-54961321 ; createFile()
返回一个promise而不是一个文件(没有then()
库将在第一个单元格上创建一个包含“ Promise”文本的文件); generate()
由generateAsync()
上JSZip库。 在ExcelBuilder要求的v3版本上 , generate()
已被替换 ; {type:'base64'}
? 只是一个猜测,但是我认为这是压缩内容后的Excel文件。 我不知道。 我无法使用fileSaver.js库创建它,所以我在事件处理程序中创建了一个链接,单击了它,然后删除了该链接。
var myA = document.createElement('a');
myA.setAttribute('href', "'data:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64,' + EB.createFile(workbook));
myA.setAttribute('download', "myXLSX.xlsx");
document.getElementById("mydiv").appendChild(myA);
myA.click();
document.getElementById("mydiv").removeChild(myA);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.