将数组以单元格格式导出到Excel文件

7

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

有人能帮我解决这个问题吗?我还想让每个单元格具有不同的格式(例如不同的颜色/加粗/填充等)


如果您以那个测试文件为基础,请确保正确包含所有依赖项。 - Sirko
对于这个,依赖关系不就是 xlsx.js 和 jszip.js 吗?我还包括了 jquery.js 以防万一。 - Johnti
你能够包含你当前的实际代码吗? - Sirko
现在,仅作为测试,这是我所拥有的: http://notepad.cc/share/AOFCw4Elv8 - Johnti
1个回答

3
你的代码基于node.js测试。文档中写道:

编写工作簿

对于编写,第一步是生成输出数据。helper函数write和writeFile将以适合传播的各种格式生成数据。第二步是实际与终点共享数据。假设workbook是一个workbook对象:

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()),那么应该可以解决问题。

哦,哇,非常感谢。现在我感觉自己像个傻瓜:(因为我还是JS的新手,请原谅我哈哈)。你知道我怎么能够更改每个单元格的单元格格式吗? - Johnti
cell对象中,您有很多属性,例如r表示“富文本编码”。这可能是您的起点。也许尝试创建一个带有所需格式的Excel表格,并使用该库加载它。然后您可以查看这些样式是如何编码的。 - Sirko
我一直在看这个,但还是无法使它工作。你能否最后再帮我查看一下 js-xlsx 并帮助我解决这个问题?我所需要的就是可以加粗、改变文本颜色和填充每个单元格的颜色。 - Johnti
@Johnti 经过测试,我怀疑这个库是否解析了所有的样式信息。我只能使用这段代码和一个在A1到A4单元格中具有相应格式的测试文件提取一些背景颜色信息。 - Sirko
1
我不想解析Excel文件中的样式。我想设置输出单元格的样式。我不在GH上。 - Johnti
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接