【发布时间】:2016-12-12 23:19:59
【问题描述】:
我正在做一个项目,我正在使用 XLSX node.js 库创建一个 excel 文件,通过 Restify 将其发送到客户端,然后我使用 FileSaver.js 库将其保存在本地计算机上。当我将 xlsx 工作簿写入后端文件时,它可以正常打开,但是,当我在客户端上打开它时,它已损坏。我收到错误消息:“Excel 无法打开此文件。文件格式或文件扩展名无效。验证文件未损坏且文件扩展名与文件格式匹配”。
这是我在后端编写和发送文件的代码:
var wopts = { bookType:'xlsx', bookSST:false, type:'binary' };
var workbook = xlsx.write(wb, wopts);
res.send(200, workbook);
在前端,我使用的是 XLSX 文档中的代码:
function s2ab(s) {
var buf = new ArrayBuffer(s.length);
var view = new Uint8Array(buf);
for (var i=0; i!=s.length; ++i)
view[i] = s.charCodeAt(i) & 0xFF;
return buf;
}
saveAs(new Blob([s2ab(response.data)],{type:""}), "test.xlsx");
关于为什么这不起作用的任何想法?任何帮助将非常感激。谢谢。
【问题讨论】:
-
'wb' 指的是什么?看到这部分代码可能会很好。
-
这是一个相当大的代码块,但我最终弄明白了。问题在于以二进制形式发送它,我最终使用 base64 进行编码。这个链接最终对这个问题非常有帮助:github.com/SheetJS/js-xlsx/issues/122
标签: node.js excel xlsx restify filesaver.js