【发布时间】:2016-07-13 16:25:02
【问题描述】:
我正在使用 Kendo 电子表格从 Excel 文件导入数据,因此我可以使用 Ajax 回调将其插入 SQL Server 数据库。 Ajax 回调工作正常,但我已经确定任何日期字符串都被转换为从 1899 年 12 月 30 日的基准日期开始的整数偏移量。我已经向 Telerik 提交了支持票证,但他们似乎不明白这个问题。
数据在 Kendo 电子表格中适当地显示为日期。 Kendo 将日期输入从“12/1/2015”转换为“12-1-2015”。
我使用的是最新版本的 ASP.NET MVC 5 包装器,但 JavaScript 代码是 2016-1-226-545 版本的 JavaScript。包装器版本似乎无关紧要,但更高版本的 JavaScript 具有 gulpfile.js,这与我的 ASP.NET MVC 5 项目上的 Bundleconfig 接口冲突,所以我只使用适用于的 JavaScript 的最后一个版本我的设置。
我正在使用的电子表格非常基础:
@(
Html.Kendo().Spreadsheet()
.Name("SiteSlotDataSS")
.Rows(10)
.Columns(4).ColumnWidth(100)
.Sheets(sheets =>
{
sheets.Add()
.Name("Study Data");
}
)
)
我使用导入选项来拉入 Excel 电子表格,并使用带有单击事件例程的简单按钮将数据复制到字符串数组以发送到 Ajax 回调。我已经确认发送到服务器控制器的数据与发送前在客户端的数据相同。从范围中提取值时,会发生日期到整数的转换。
选择值的代码是:
values = sheet.range("A" + headerRows.toString() + ":" + endRange + (headerRows + rows).toString()).values();
这会生成除包含日期的列之外的所有其他列的正确翻译。
我尝试了以下暴力破解问题,但没有成功:
for (var x = 0; x <= rows; x++) {
sheet.range("K" + (headerRows + x).toString()).format(kendo.spreadsheet.formatting.date);
}
我可以尝试使用日期函数将日期转换回原始值,但每个人都知道 Telerik 的文档有点简陋,总体而言,要找到问题的答案简直就是一场噩梦。
解决办法是什么?
Kendo 电子表格似乎将日期值存储为从 1899 年 12 月 30 日开始的整数偏移量(以天为单位)。我通过输入 1901 年 1 月 1 日的日期来确定“0”值以查看返回的日期,然后是 1900 年 1 月 1 日。后者的结果是“2”,使基准日期为 1899 年 12 月 30 日。获取数据并在服务器上进行转换似乎是最好的选择。我对 Telerik 的回应并不抱太大希望。
【问题讨论】:
标签: kendo-ui kendo-asp.net-mvc kendo-ui-mvc