在我的应用程序中我无法使用 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,如果我尝试打开 .xls,它会打开,但数据无法解释。
最佳答案
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');
});
我今天遇到了同样的问题,但使用的是 Angular 版本的 FileSaver.js。我无意中解决了它。以下代码刚刚工作:
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”文本的文件);- 我对库的分支是用 JSZip 库上的
generateAsync()
替换generate()
。generate()
是 replaced on v3这是 ExcelBuilder 请求的版本; - 为什么是
{type:'base64'}
?这只是一个猜测,但我认为 Excel 文件在其内容被压缩后是什么。我不知道。
关于javascript - 将 ExcelBuilder.js 与 FileSaver.js 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36428981/