繁体   English   中英

用js-xlsx写日期列

[英]Write a Date column with js-xlsx

我使用js-xlsx进行了几次尝试来编写带有Date列的XLSX文件,例如下面的一个。 每次使用Excel 2010打开XLSX文件时,日期都不会像我期望的那样呈现:它以从某个来源开始的天数呈现。 有没有一种方法可以直接呈现日期,而不必在Excel中格式化该列?

const XLSX = require("xlsx");

var wb = { 
    Sheets: { 
        Sheet1: { 
            '!ref': 'A1:A2', 
            A1: { t: 'd', v: new Date('13 April 2014 00:00 UTC'), w: '2014-04-13' }, 
            A2: { t: 'd', v: new Date('13 April 2014 00:00 UTC'), w: '2014-04-13' }
        } 
    },
    SheetNames: [ 'Sheet1' ] 
  }

XLSX.writeFile(wb, "wbDate.xlsx", {cellDates: true});

编辑:可能的答案

最后我得到一些日期如下:

const XLSX = require("xlsx");

var wb = { 
    Sheets: { 
        Sheet1: { 
            '!ref': 'A1:B2', 
            A1: { t: 'd', v: '2016-06-21' }, 
            A2: { t: 'd', v: '2016-11-22' },
            B1: { t: 'n', v: 42542, z: 'm/d/yy' }, 
            B2: { t: 'n', v: 42696, z: 'm/d/yy' }
        } 
    },
    SheetNames: [ 'Sheet1' ] 
  }

XLSX.writeFile(wb, "wbDate.xlsx", {cellDates: false});

这给出了(Windows 7,Excel 2010,语言环境时间比利时):

在此处输入图片说明

奇怪的是,格式为m/d/yy ,但输出呈现为d/m/yy (或dd/mm/yy ?)。 我还没有设法获得另一种格式(但是这种格式对我来说很好)。

在本期的GitHub上,对格式日期的各种方式进行了长时间的讨论和解释:

这是一个未解决的问题,因此所有问题可能尚未解决。

请记住,格式(自纪元以来的天数)不是唯一的问题。 另一个问题是,纪元的开始实际上是从不同系统的不同日期算起的,因此也必须加以考虑。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM