我手动创建了一个.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});
答案 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互操作是我讨厌所有互操作,他们处理起来很慢,就是这样。