使用单元格格式将数组导出为ex​​cel文件

我目前正在尝试导出一个数组到格式为单元格的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 

最后2行基本上是说的代码的一部分

 XLSX.writeFile(wb, 'sheetjs.xlsx'); 

我知道wb是不是未定义,如果我尝试做console.log,Excel电子表格显示正常:

有人可以帮我弄这个吗? 我也试图让每个单元格有不同的格式(IE不同的颜色/粗体/填充/等)

您将您的代码基于node.jstesting。 该文件指出:

编写工作簿

为了写作,第一步是生成输出数据。 辅助函数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 */ 

写入二进制string(使用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() ),你应该没问题。