javascript - 将 ExcelBuilder.js 与 FileSaver.js 结合使用

标签 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, "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/

相关文章:

javascript - 单击触摸设备 (iPad/iPhone) 上的任意位置以隐藏由 .hover() 切换的下拉菜单

javascript - Hammer.js 中 panend 和 pancancel 的区别?

javascript - 如何将新数组传递给函数?

python - 如何将数据框从 iPython 复制/粘贴到 Google 表格或 Excel 中?

android - 下载 sqlite 文件并在我的 android 应用程序中使用它

javascript - 如何将 f.date_select 的月份、日期、年份放在单行上?

excel - 为什么返回自身作为默认属性的对象会挂起 Excel 并使调试器崩溃?

c# - 是什么原因导致错误HRESULT : 0x800A03EC?

java代码从服务器下载图像到客户端

download - WiX 执行包 : Failed to send request to URL