Я определяю пользовательский формат данных через Apache POI. Я знаю, что мне нужно использовать следующую конструкцию:

DataFormat data = this.workbook.createDataFormat();
cellStyle.setDataFormat(data.getFormat("YY:DDD:HH:MM:SS"));

В документации Apache POI я нашел ссылку на форматы.

Данные, которые мне нужно отформатировать, представляют дату и время, т.е.

00:000:00:15:00 
YY:DDD:HH:MM:SS

Пока все работает хорошо. Щелкните правой кнопкой мыши ячейку Excel, проверьте формат ячейки -> пользовательский гг: ддд: чч: мм: сс. Однако я не могу сделать диаграмму из этого пользовательского формата времени. Выбор этих данных:

task   | time
-------|----------------
task 1 | 00:000:00:15:00
task 2 | 00:000:00:20:00
task 3 | 00:000:00:10:00

и выбор опции вставить гистограмму выводит некоторую тарабарщину. Есть ли способ заставить диаграмму работать без создания дополнительных данных (например, подсчет общего количества секунд и отображение значений секунд)?

1 ответ1

1

Excel имеет дело с датами и временем в виде серийных номеров, где число - это число дней с 0 января 1900 года, а десятичная дробь - это дробная часть 24-часового дня (для получения дополнительной информации см . Дата и время CPearson's Excel. Итак, в Excel, 10/12/2012 10:20:07 = 41194.4306392361 . Чтобы помочь нам взаимодействовать с Excel, он распознает даты и время в определенных стандартных форматах (например, в традиционном формате: США ММ / ДД / ГГГГ ЧЧ: ММ: СС). Проблема, с которой вы, похоже, сталкиваетесь, заключается в том, что ваш формат даты (ГГ: ДДД: ЧЧ: ММ: СС) не распознается Excel как дата / время. У вас есть два решения:

  1. Экспортируйте свою дату из Apache в формате "дружественный Excel"; или же
  2. Преобразование вашего пользовательского формата в формат "дружественный Excel" в Excel с помощью формул.

Если вы используете # 2, а DDD в вашем пользовательском формате даты буквально является днем года (например, 12 декабря 2012 года - 286-й день года), вам, вероятно, потребуется VBA для преобразования этого числа в соответствующий день. / месяц комбинация.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .