Javascript 将数组导出为单元格格式的excel文件

Javascript 将数组导出为单元格格式的excel文件,javascript,excel,xlsx,Javascript,Excel,Xlsx,我当前正在尝试将数组导出到具有单元格格式的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

我当前正在尝试将数组导出到具有单元格格式的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电子表格将正确显示:|


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

您的代码基于node.js测试。各国:

编写工作手册

对于写入,第一步是生成输出数据。帮手 函数write和writeFile将生成各种格式的数据 适合传播。第二步是实际共享资源 带有端点的数据。假设工作簿是工作簿对象:

节点写入文件:

写入二进制字符串(使用FileSaver.js):


总之,您尝试在浏览器中使用node.js内部函数,但失败了。如果您尝试使用秒方法(
XLSX.write()
而不是
XLSX.writeFile()
),您应该会没事。

如果您使用该测试文件作为基础,请确保正确地包含所有依赖项。对于这一点,依赖项不只是XLSX.js和jszip.js吗?我还把jquery.js放在了case中,你能像现在一样包含你的实际代码吗?现在,作为一个测试,这就是我所拥有的:哦,哇,非常感谢。我现在觉得自己像个傻瓜:((对JS来说还是新手,请原谅,哈哈)。你知道我怎样才能更改每个单元格的格式吗?例如,
r
中的“富文本编码”。这可能是您的开始。您可以尝试创建一个具有所需格式的Excel工作表,并使用该库加载它。然后您可以查看这些样式的编码方式。我一直在查看这些样式,但仍然无法使其正常工作。您能帮我最后看一眼js xlsx并帮助我解决此问题吗?我需要的是能够ld、更改文本颜色和填充每个单元格的颜色。@Johnti经过一些测试后,我怀疑该库是否解析了所有样式信息。我只是能够使用[此代码]()提取背景颜色的一些信息和一个测试文件,在单元格A1到A4中有各自的格式。我不想解析excel文件中的样式。我想设置输出单元格的样式。我不在GH上。
/* output format determined by filename */
XLSX.writeFile(workbook, 'out.xlsx');
/* at this point, out.xlsx is a file that you can distribute */
/* 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")