下载 XLSX 已损坏

问题描述 投票:0回答:3

我正在尝试使用 AngularJS 甚至纯 JavaScript 将 HTML 表格转换为 XLSX。

当我使用下面的方法转换为 XLS 时,其下载正常并且 XLS 文件正在打开。

var blob = new Blob([template], {type: "data:application/vnd.ms-excel"});
window.navigator.msSaveOrOpenBlob(blob, "myExcel.xls"); 

但是,我的要求想要 XLSX 中的文件,所以我在相同的代码中更改了 MIME 类型和文件扩展名,如下所示,

var blob = new Blob([template], {type: "data:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"});
window.navigator.msSaveOrOpenBlob(blob, "myExcel.xlsx");

但是当我打开下载的 xlsx 文件时,它已损坏,MS Office 会弹出错误窗口。

我做错了什么以及如何将 HTML 表格转换为 XLSX? 甚至替代的想法也被接受。

PS: 该表非常复杂,列中包含行等等,因此像 ALASQL、JS-XLSX 这样的插件没有帮助。

javascript angularjs excel xlsx
3个回答
3
投票

问题可能出在 XLSX 类型上。这篇文章指出它是一组压缩的 XLS 文件。通读一下。我无法发表评论,因为我的分数还没有超过 50,所以我将其作为答案发布。

https://stackoverflow.com/a/37516332/1425168


1
投票

尝试改变哑剧类型

将其更改为

application/vnd.ms-excel
,它也可以与 XLSX 配合使用。

var blob = new Blob([template], {type: "application/vnd.ms-excel"});
window.navigator.msSaveOrOpenBlob(blob, "myExcel.xlsx");

试试这个代码。


0
投票

尝试编辑文件类型,

`const blob = new Blob([data], {
    // type: 'application/vnd.ms-excel;'    //old 
       type: 'application/vnd.openxmlformats- officedocument.spreadsheetml.sheet;
charset=utf-8'    //try this new
          })`   
© www.soinside.com 2019 - 2024. All rights reserved.