Отображение поля даты и времени всегда отображает устанавливает время до полуночи, используя to_spreadsheet (Axlsx)

Сайт My Rails 4.2 позволяет пользователям загружать электронную таблицу XLSX. Для рендеринга электронной таблицы я использую гем to_spreadsheet, который использует Axlsx для рендеринга электронных таблиц.

Я пытаюсь отобразить дату в формате d/m/yyyy h:mm используя числовой формат 22 который представляется единственным числовым форматом, отображающим дату и время в соответствии с документацией Axlsx.

Я форматирую строку используя strftime("%F %T") и настройка num_fmt до 22 в источнике HTML, но время всегда отображается как полночь:

контроллер:

# just render one row with one cell containing the current time
@data = [{
  # for the sake of example, convert a string to datetime
  date: "01/02/2016 14:16:15".to_datetime.strftime("%F %T")
}]

Посмотреть

%table
  %thead
    %tr
      %th Date
  %tbody
    - @data.each do |row|
      %tr
        %td.date=row[date]

- format_xls 'table' do
  - format 'td.date', num_fmt: 22

таблица

╭──────────────────────╮
│         Date         │
╞══════════════════════╡
│     01/02/2016 00:00 │ <----- Should be "01/02/2016 14:16:15"
└──────────────────────┘

Я пытался удалить num_fmt и дата и время отображаются правильно. Однако это интерпретируется Excel как строка, которая устраняет возможность для пользователей выполнять дополнительные вычисления в ячейках.

Результат одинаков как в MS Excel, так и в OO Calc.

Это проблема с to_spreadsheet, axlsx, или я неправильно устанавливаю формат?

1 ответ

Я решил это с помощью разработчиков из github здесь: https://github.com/glebm/to_spreadsheet/issues/27

Оказывается, вы должны дать клетке таблицы datetime класс, если вы хотите, чтобы время было сохранено. Поэтому потребуется изменить HAML на следующее:

%table
  %thead
    %tr
      %th Date
  %tbody
    - @data.each do |row|
      %tr
        %td.datetime=row[date]

- format_xls 'table' do
  - format 'td.datetime', num_fmt: 22

Это тогда делает правильную дату и время:

╭──────────────────────╮
│         Date         │
╞══════════════════════╡
│     01/02/2016 14:16 │
└──────────────────────┘
Другие вопросы по тегам