Я использую электронную таблицу Kendo для импорта данных из файла Excel, чтобы я мог подключить их к базе данных SQL Server с помощью обратных вызовов Ajax. Обратные вызовы Ajax работают нормально, но я решил, что любые строки Date преобразуются в целочисленное смещение от базовой даты 12/30/1899. Я отправил билет поддержки Telerik, но они, похоже, не понимают проблему.Извлечение значений значений в таблице таблиц Kendo меняет даты на целые числа
Данные отображаются в электронной таблице Kendo соответствующим образом в качестве даты. Kendo конвертирует ввод данных как «12/1/2015» в «12-1-2015».
Я использую последнюю версию обертки ASP.NET MVC 5, но код JavaScript - это версия JavaScript JavaScript 2016-1-226-545. Версия-оболочка кажется несущественной, но более поздние версии JavaScript имеют gulpfile.js, и это конфликтует с интерфейсом Bundleconfig в моем проекте ASP.NET MVC 5, поэтому я просто работаю с последней версией JavaScript, которая работает для моя настройка.
Таблица, я работаю с довольно простым, чтобы начать:
@(
Html.Kendo().Spreadsheet()
.Name("SiteSlotDataSS")
.Rows(10)
.Columns(4).ColumnWidth(100)
.Sheets(sheets =>
{
sheets.Add()
.Name("Study Data");
}
)
)
Я использую функцию импорта, чтобы тянуть в электронной таблице Excel и использовать простую кнопку с рутинным нажмите, чтобы скопировать данные к string array для отправки на обратный вызов 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 Spreadsheet сохраняет значения даты как целочисленное смещение от 12/30/1899 в днях. Я определил значение «0», введя дату 1/1/1901, чтобы узнать, что вернулось, а затем 1/1/1900. Результатом последнего было «2», что сделало базовую дату 12/30/1899. Лучше всего использовать данные и преобразовать их на сервере. На самом деле я не ожидаю большой реакции от Telerik.
Я протестировал его. Я преобразовал целое число обратно в дату, используя open_date = basedate.AddDays (offset), где offset - Double.Parse of integer. Он работает нормально. Основная дата - 12/30/1899. Проверьте свою математику снова. 1/1/1900 имеет целочисленное значение 2. Я использовал начальную дату как DateTime basedate = new DateTime (1899, 12, 30); –
Вопрос очень ясен, что я создаю простую, пустую таблицу kendo и импортирую файл excel. Затем я вызываю javascript-процедуру с обратным вызовом ajax для отправки содержимого электронной таблицы на сервер для хранения в базе данных. Осталось несколько деталей, но они могут различаться в зависимости от базы данных excel, которую вы импортируете. Данные отправляются как простой строковый массив на сервер. Что касается вещей, имеющих смысл с Kendo, вам нужно больше работать с материалами Telerik, чтобы понять, что очень мало смысла, начиная с их документации. –