【问题标题】:exceljs read Date Cell with formatexceljs用格式读取日期单元格
【发布时间】:2020-11-26 21:24:35
【问题描述】:

当我使用 exceljs 包从 excel 文件中的列中读取日期值时遇到问题,我无法像日期数据类型那样以正确的格式获取真值,而是得到一个数字。

我的项目是用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'

【问题讨论】:

    标签: node.js typescript date nestjs exceljs


    【解决方案1】:

    您需要将 Excel 日期序列号转换为 JS 日期。

    这是一个非常基本的例子:

    const date0 = new Date(0);
    const utcOffset = date0.getTimezoneOffset();
    
    const cellValue = new Date(0, 0, cell.value - 1, 0, -utcOffset, 0);
    

    【讨论】:

    • 感谢您的帮助。
    【解决方案2】:

    要将 Excel 序列日期转换为正常,您可以使用

    new Date(Date.UTC(0, 0, cell.value - 1, 0, 0, 0))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-18
      • 2014-02-11
      • 1970-01-01
      • 2018-09-28
      • 2013-08-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多