Javascript 将ExcelBuilder.js与FileSaver.js一起使用
在我的应用程序中,我不能使用Downloadify(这是ExcelBuilder.js推荐的),所以我尝试用FileSaver.js下载我的.xlsx文件 我两个都试过了Javascript 将ExcelBuilder.js与FileSaver.js一起使用,javascript,excel,download,Javascript,Excel,Download,在我的应用程序中,我不能使用Downloadify(这是ExcelBuilder.js推荐的),所以我尝试用FileSaver.js下载我的.xlsx文件 我两个都试过了 var blob = new Blob([builder.createFile(basicReport.prepare())],{ type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base65" }) saveAs(blob,
var blob = new Blob([builder.createFile(basicReport.prepare())],{
type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base65"
})
saveAs(blob, "myXLSX.xlsx");
及
我可以下载该文件,并尝试了.xls和.xlsx扩展名。Excel无法打开.xlsx,如果我尝试打开.xls,它会打开,但数据无法解释。我无法使用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);
2017年9月14日更新:有一个更简单的代码,您可以在中看到。您可以删除
新Blob
行,只需使用:
ExcelBuilder.Builder.createFile(workbook, {type:'blob'})
.then(function(blob) {
FileSaver.saveAs(blob, 'File.xlsx');
});
我今天也遇到了同样的问题,但是使用了FileSaver.js的角度版本。我无意中解决了这个问题。以下代码刚刚起作用:
ExcelBuilder.Builder.createFile(workbook, {type:'blob'})
.then(function(blob) {
var data = new Blob([blob], {type:'base64'});
FileSaver.saveAs(data, 'File.xlsx');
});
我的库“角度文件保护程序”:“1.1.2”
和“excel builder js”:https://github.com/rodrigosaling/excel-builder.js.git#master“
这是excel builder.js 2.0.2的一个分支
一些澄清(因为这并非100%无意):
来自 ;李>{type:'blob'}
返回一个承诺,而不是一个文件(如果没有createFile()
库将创建一个在第一个单元格上包含“承诺”文本的文件)李>then()
- 我的库分支是用JSZip库上的
替换generateAsync()
generateAsync()
was这是ExcelBuilder请求的版本李>generate()
- 为什么
?这只是一个猜测,但我认为Excel文件的内容压缩后是什么。我不知道{type:'base64'}
ExcelBuilder.Builder.createFile(workbook, {type:'blob'})
.then(function(blob) {
var data = new Blob([blob], {type:'base64'});
FileSaver.saveAs(data, 'File.xlsx');
});