Как представить DateTime в Excel

Я нашел и использовал следующую библиотеку .NET , реализующую текстовое математику Aho-Corasick от Tom Petricek для решения проблемы, с которой я столкнулся. Это прекрасно сработало для меня.

70
задан Svish 11 June 2009 в 15:01
поделиться

4 ответа

Базовый тип данных datetime в Excel - это 64-битное число с плавающей запятой, где длина дня равна 1, а 1 января 1900 00:00 равна 1. Итак, 11 июня 2009 г. 17: 30 составляет примерно 39975,72917.

Если ячейка содержит числовое значение, подобное этому, его можно преобразовать в дату и время, просто применив к ячейке формат даты и времени.

Итак, если вы можете преобразовать дату и время в числа, используя по приведенной выше формуле, выведите их в соответствующие ячейки, а затем установите форматы ячеек на соответствующий формат даты и времени, например, гггг-мм-дд чч: мм: сс, тогда должно быть возможно получить то, что вы хотите.

Также Стефан де Брюйн указал, что в Excel есть ошибка, поскольку он ошибочно предполагает, что 1900 год является високосным, поэтому вам необходимо принять это во внимание при проведении расчетов ( Википедия ).

76
ответ дан 24 November 2019 в 13:19
поделиться

Excel может отображать тип даты аналогично DateTime. Щелкните правой кнопкой мыши по затронутой ячейке, выберите Формат ячеек , затем в Категория выберите Дата и в Тип выберите тип, который выглядит примерно так this:

3/14/01 1:30 PM

Это должно сделать то, что вы просили. Я протестировал сортировку на некоторых примерах данных в этом формате, и, похоже, он работал нормально.

2
ответ дан 24 November 2019 в 13:19
поделиться

Excel ожидает, что даты и время будут сохраняться в виде числа с плавающей запятой, значение которого зависит от Параметр Date1904 книги, а также числовой формат, такой как «мм / дд / гггг» или «чч: мм: сс» или «мм / дд / гггг чч: мм: сс», чтобы число отображалось для пользователя как дату / время.

Используя SpreadsheetGear for .NET , вы можете сделать это: worksheet.Cells ["A1"]. Value = DateTime.Now;

Это преобразует DateTime в double, который является базовым типом, который Excel использует для даты / времени, а затем отформатирует ячейку с датой по умолчанию и / или формат числа времени автоматически в зависимости от значения.

SpreadsheetGear также имеет методы IWorkbook.DateTimeToNumber (DateTime) и NumberToDateTime (double), которые преобразуют объекты .NET DateTime в двойные, которые может использовать Excel.

Я ожидал XlsIO, чтобы иметь что-то подобное.

Отказ от ответственности: я владею SpreadsheetGear LLC

1
ответ дан 24 November 2019 в 13:19
поделиться

Вы можете установить значения даты и времени для ячейки в XlsIO, используя одну из этих опций

sheet.Range["A1"].Value2 = DateTime.Now;
sheet.Range["A1"].NumberFormat = "dd/mm/yyyy";

sheet.Range["A2"].DateTime = DateTime.Now;
sheet.Range["A2"].NumberFormat = "[$-409]d-mmm-yy;@";

Вы можете найти дополнительную информацию здесь .

1
ответ дан 24 November 2019 в 13:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: