使用单元格格式将数组导出到 excel 文件

Exporting an array to excel file with cell formatting

本文关键字:excel 文件 数组 单元格 格式      更新时间:2023-09-26

我目前正在尝试将数组导出到具有单元格格式的 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不是未定义的,就好像我尝试做控制台一样.log其中,excel电子表格正确显示:|

有人可以帮助我吗?我还尝试让每个单元格具有不同的格式(IE 不同的颜色/粗体/填充/等(

你的代码基于节点.js测试。文档指出:

编写工作簿

对于写入,第一步是生成输出数据。帮手 函数 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()(,你应该没问题。