js-xlsx:写入.xlsx文件时保留单元格样式

时间:2017-01-25 21:09:19

标签: javascript

我手动创建了一个.xlsx文件。我为某些行添加了不同的颜色,有些单元格具有自定义日期格式。

我正在使用js-xlsx npm模块从.xlsx文件中读取数据。在写回相同的.xlsx文件以更新某些单元格值时,所选颜色和日期格式将丢失。

我尝试了以下代码,但这无助于保留.xlsx单元格样式。

    var XLSX = require('xlsx');
    XLSX.readFile('abc.xlsx', {cellStyles: true});
        var first_sheet_name = workbook.SheetNames[1];
        var address_of_cell = 'A1';
        var worksheet = workbook.Sheets[first_sheet_name];
        var desired_cell = worksheet[address_of_cell];
        var desired_value = desired_cell.v;
        desired_cell.v = 'efg';
   XLSX.writeFile('abc.xlsx', {cellStyles: true});

3 个答案:

答案 0 :(得分:1)

我自己偶然发现了这个问题。为了将来的读者,我最终发现ExcelJS可以在对.xlsx文件进行修改时保留样式。如果您不愿意为js-xlsx的样式功能支付溢价,这是一个很好的选择。

您可以使用npm install exceljs进行安装,其github存储库(上面链接)上的文档非常棒。

答案 1 :(得分:0)

js-xslx的稳定版本不能很好地处理样式。

但是a fork,应该在某个时候合并,已经做了大量的工作来支持它。

如果你相信它足够稳定,你可以使用它。

npm install xlsx-style --save,将您的require('xslx')替换为require('xslx-style'),您应该好好去

答案 2 :(得分:0)

如果速度不是问题,我会因为这些原因而使用Excel Interop,我知道你需要将它安装在你的计算机中,但任何办公室都应安装微软套件。

它具有出色的兼容性,性能明智不是那么好,但是如果你只需要改变单元格值和数据,只要将它们转换为对象数组,即使成千上万的单元格也是如此。

我从来没有遇到任何复杂的问题,包括自动调整大小的列和行,页面打印布局,以奇怪的方式插入/删除单元格,格式化文本和任何其他单元格属性,从.xslx转换为.xls反之亦然等等。

我讨厌excel互操作是我讨厌所有互操作,他们处理起来很慢,就是这样。