【问题标题】:date changes on export kendoGrid导出 kendoGrid 的日期更改
【发布时间】:2018-07-03 19:58:15
【问题描述】:

我有这个用 kendoUI 制作的表格,当用户将表格导出到 excel 时,所有日期值都会改变,问题只出现在 chrome 中,firefox 工作正常。

You can try the runnable on this link

var localData=[
    {cliente:'COMERCIALIZACION',lote:1323,calidad:'PRIMERAS',fecha:'2017-07-07',sacos:10},            {cliente:'COMERCIALIZACION',lote:1324,calidad:'PRIMERAS',fecha:'2017-07-07',sacos:80},{cliente:'COMERCIALIZACION',lote:1325,calidad:'PRIMERAS',fecha:'2017-07-07',sacos:29},                {cliente:'COMERCIALIZACION',lote:1326,calidad:'PRIMERAS',fecha:'2017-07-07',sacos:5}];

【问题讨论】:

  • 奇怪!但是您提供的链接按预期工作。
  • 在 chrome 版本中试用 >=67
  • 我已经在 67.0.3396.99 版本(正式版本)(64 位)上进行了测试

标签: jquery kendo-ui kendo-grid


【解决方案1】:

这个问题很可能是由时区差异引起的。自动使用浏览器的时区。
尝试将HH:mm添加到网格中的日期格式中,并在Excel工作表中显示时间并检查时差。

编辑:
如果您只对日期而不是时间感兴趣,您可以将日期的小时部分设置为 12,这样即使相差几个小时,日期也将保持不变。

您可以使用以下代码来执行此操作:

excelExport: (e) => {
    console.log("Excel export", e.workbook);

    e.workbook.sheets[0].rows.filter((row) => row.type === "data").forEach((row, index) => {
        row.cells[2].value.setHours(12);
    });

    console.log("Excel export", e.workbook);
}

如果您想使用更通用的方法而不是带有日期的列的索引,您可以这样做:

e.workbook.sheets[0].rows.filter((row) => row.type === "data").forEach((row, index) => {
    row.cells.filter((cell) => cell.value instanceof Date).forEach((cell) => cell.value.setHours(12));
});

【讨论】:

  • 我发现了这个问题,这是由于chrome,firefox和其他浏览器的日期不同造成的。同样的问题stackoverflow.com/questions/50825864/…
  • 您是否检查了差异实际上是否像您引用的帖子中那样为 28 秒?
  • 在我的情况下,差异是 12 秒,excel 显示这个值“6/7/2017 23:59:48”
  • 我已经检查过了,对我来说,添加了 40 秒,所以 00:00:00 变成了 00:00:40。您只需要日期组件吗?如果是这样,我有一个解决方案。
  • 是的,我只需要日期值。
猜你喜欢
  • 2017-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-06
相关资源
最近更新 更多