Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将ExcelBuilder.js与FileSaver.js一起使用_Javascript_Excel_Download - Fatal编程技术网

Javascript 将ExcelBuilder.js与FileSaver.js一起使用

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,

在我的应用程序中,我不能使用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");


我可以下载该文件,并尝试了.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()
    generate()
    was这是ExcelBuilder请求的版本
  • 为什么
    {type:'base64'}
    ?这只是一个猜测,但我认为Excel文件的内容压缩后是什么。我不知道
ExcelBuilder.Builder.createFile(workbook, {type:'blob'})
    .then(function(blob) {
      var data = new Blob([blob], {type:'base64'});
      FileSaver.saveAs(data, 'File.xlsx');
    });