我目前正在尝试将数组导出为带有单元格格式的excel文件。
我在这里开始使用此代码:
https://github.com/SheetJS/js-xlsx/blob/master/tests/write.js
但问题是,无论何时我尝试导出它(将文件保存为xlsx文件),这都是控制台中显示的错误:
Uncaught TypeError: Cannot read property 'writeFileSync' of undefined xlsx.js:5182
writeSync xlsx.js:5182
writeFileSync xlsx.js:5173
process_xlsx Test.html:379
reader.onload Test.html:438
最后两行基本上是代码中
的部分XLSX.writeFile(wb, 'sheetjs.xlsx');
我知道wb没有未定义,好像我尝试执行它的console.log,excel电子表格正确显示:|
有人可以帮我吗?我还尝试让每个单元格具有不同的格式(IE不同的颜色/粗体/填充/等)
答案 0 :(得分:3)
您的代码基于node.js测试。 documentation州:
编写工作簿
对于写入,第一步是生成输出数据。帮助者 函数write和writeFile将以各种格式生成数据 适合传播。第二步是实际分享 带有终点的数据。假设工作簿是工作簿对象:
nodejs写入文件:
/* output format determined by filename */
XLSX.writeFile(workbook, 'out.xlsx');
/* at this point, out.xlsx is a file that you can distribute */
写入二进制字符串(使用FileSaver.js):
/* bookType can be 'xlsx' or 'xlsm' or 'xlsb' */
var wopts = { bookType:'xlsx', bookSST:false, type:'binary' };
var wbout = XLSX.write(workbook,wopts);
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;
}
/* the saveAs call downloads a file on the local machine */
saveAs(new Blob([s2ab(wbout)],{type:""}), "test.xlsx")
总而言之:您尝试在浏览器中使用node.js内部函数,但失败了。如果您尝试遵循秒方法(XLSX.write()
而不是XLSX.writeFile()
),那么您应该没问题。