用js-xlsx写一个date列

使用js-xlsx我做了几次尝试写一个带有Date列的XLSX文件,比如下面的那个。 每当我打开Excel 2010中的XLSX文件时,date都不会如我所预期的那样呈现:它被呈现为来自某个源的天数。 有没有办法直接呈现date,而不必格式化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}); 

编辑:可能的答案

最后我得到一些date如下:

 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上对这个问题的date进行格式化有很长的讨论和解释:

这是一个公开的问题,所有的问题可能还没有解决。

请记住,格式(自时代以来的天数)不是唯一的问题。 另一个问题是,时代的开始实际上是从不同的日子在不同的系统上计算的,并且也必须考虑在内。