在node.js中使用ejsExcel的坑

背景

最近搜集了一些读写excel的插件,各有优劣,但发现ejsExcel可以通过模板实现样式与数据分离,感觉还不错,但使用中坑的确不少,记录了下,并提供了一些解决方法。

所遇到的问题

1、生成的excel不好读取

用ejsExcel生成的excel,我尝试了常用的js-xlsx、node-xlsx、excel-parser等来读取,结果数据都是空数组,这样不利于反复读写,
最后尝试了xlsx-populate,可以读取出可用数据,在此提供他的读取api,

1
2
// Get 2D array of all values in the worksheet.
const values = workbook.sheet("Sheet1").usedRange().value();

2、excel的日期、数字格式值读出是数字

例如:excel中60%的百分数格式读出的值会是0.6,2017/3/27的日期格式读出的值为42821。
如果读出的数据直接再通过ejsExcel生成excel文件,需要显示正确的单元格格式,需要:

1
<%~yourValue%>在加上设置单元格格式,就可以输出日期格式,数字格式等.

如果只是想把看不懂的数字转换为正确的格式,那么尝试下xlsx-populate的api:

1
const date = XlsxPopulate.numberToDate(num); // Wed Feb 22 2017 00:00:00 GMT-0500 (Eastern Standard Time)

3、excel复制粘贴整行数据错位

这种情况,其实是xlsx-populate的问题,读取出来的数据undefined代替空的单元格,复制粘贴的内容会错位一格。如图:

这种情况只有js中写好判断有用数据前undefined的个数来错位回去。

4、日期数据处理很频繁时

推荐使用Date-Utils,这货用起来so easy!

结语

说好的ejsExcel呢?怎么感觉全是xlsx-populate,这是声东击西,委婉的解决问题,哈哈。

相关资源

Date-Utils

ejsExcel

js-xlsx

node-xlsx

xlsx-populate

---------------------------------------------------------------------

坚持原创技术分享,您的支持将鼓励我继续创作!