剑道网格导出日期格式不正确

Posted

技术标签:

【中文标题】剑道网格导出日期格式不正确【英文标题】:Kendo grid export date format incorrect 【发布时间】:2018-01-06 11:35:22 【问题描述】:

当我尝试从剑道网格导出 excel 时,日期格式不正确。

这个 Warranty_Start_Date 在我的表格列中可以为空,下面是网格列的模板。

    customColumns.push(
       title: customHeaders[i],
       field: headers[i],
       width: 150,
       template:
           "#= " + headers[i] + " ? kendo.toString(kendo.parseDate(" + headers[i] + "), 'dd/MM/yyyy') : 'N/A' #",
    );

对于网格,我启用了 excel 导出功能并尝试自定义某些列的格式:

            var grid = $("#gridHardwares").kendoGrid(
        excel: 
            fileName: "excelfile.xlsx",
            allPages: true,
            filterable:true
        ,
        excelExport: function(e) 
            var sheet = e.workbook.sheets[0];

            for (var rowIndex = 1; rowIndex < sheet.rows.length; rowIndex++) 
                var row = sheet.rows[rowIndex];
                for (var cellIndex = 0; cellIndex < row.cells.length; cellIndex ++) 
                    if (cellIndex >= 9 && cellIndex <= 11)
                    
                        row.cells[cellIndex].format = "yy-MM-dd hh:mm:ss";
                    
                    if (cellIndex >= 13)
                        row.cells[cellIndex].format = "0.00";
                
            
        ,

我不明白,因为这两位小数的格式可以正常工作,但日期格式却不行。 excel中的导出结果: date is not in readable format

我也尝试了这种保留列模板的方法,但我遇到了“替换未定义”的错误

            excelExport: function(e) 
            var sheet = e.workbook.sheets[0];
            var template = kendo.template(this.columns[13].template);
            for (var rowIndex = 1; rowIndex < sheet.rows.length; rowIndex++) 
                var row = sheet.rows[rowIndex];

                for (var cellIndex = 0; cellIndex < row.cells.length; cellIndex ++) 
                    if (cellIndex >= 9 && cellIndex <= 11)
                    
                        var dataItem = 
                            Warranty_Start_Date: row.cells[13].value
                        ;

                        row.cells[13].value = template(dataItem);
                        row.cells[cellIndex].format = "yy-MM-dd hh:mm:ss";
                    
                    if (cellIndex >= 13)
                        row.cells[cellIndex].format = "0.00";
                
            
        ,

error occur when export

也许这个模板方法不适合我的情况,我不知道。但是还有其他方法可以将此日期字符串 /Date(1382544000000)/ 转换为正确的“dd-MM-yyyy”格式吗?非常需要帮助:(

【问题讨论】:

与您的问题无关,但“yy-MM-dd hh:mm:ss”会产生一个不明确的时间,如没有上午/下午的 12 小时。请考虑使用“yy-MM-dd HH:mm:ss”。 ;-) 【参考方案1】:

好的,解决方案就是将此字段类型设置为“日期”。疯狂的。

【讨论】:

以上是关于剑道网格导出日期格式不正确的主要内容,如果未能解决你的问题,请参考以下文章

剑道网格中的 JavaScript 日期

日期格式在重新加载剑道网格时重置

日期列中的剑道网格格式时间问题[重复]

将剑道网格导出到excel时格式化为文本的数字

在剑道的日期管道中包含变量值(动态格式):AngularJS

kendo ui 网格数据源过滤器日期格式