当我使用exceljs包从excel文件中的列中读取Date值时,我遇到了一个问题,我无法获得正确格式的真值,比如Date数据类型,而是得到了一个数字。
我的项目是用Nest构建的,我使用exceljs来写/读xlsx文件,代码是:
worksheet.eachRow({ includeEmpty: true }, (row, rowNumber) => {
row.eachCell((cell, colNumber) => {
...
const header = headers[colNumber - 1];
switch (header) {
...
case 'dateColumn':
// Date format is dd/mm/yyyy
// Original value in excel is '16/06/2020'
const cellValue: Date = cell.value as Date; // When i get value from cell is 43998
console.log(cellValue); // print 43998
break;
...
}
}
单元格格式为"dd/mm/yyyy">
您需要将Excel日期序列号转换为JS日期。
这里有一个非常基本的例子:
const date0 = new Date(0);
const utcOffset = date0.getTimezoneOffset();
const cellValue = new Date(0, 0, cell.value - 1, 0, -utcOffset, 0);
要将Excel序列日期转换为正常值,可以使用
new Date(Date.UTC(0, 0, cell.value - 1, 0, 0, 0))