2012-04-19 10 views
1

У меня проблема. Я использую Apache POI 3.8, и мне нужна дата набора в ячейку Excel. Но я не понимаю - как установить дату в зависимости от локали пользователя. Потому что дата в формате США - месяц/день/год, в русском языке - день/год/месяц. Я использовать следующий код для моей задачиApache POI локализованная дата в ячейке Excel

CellStyle dateStyle = workbook.createCellStyle(); 
dateStyle.setDataFormat(dataFormat.getFormat("m/d/yy")); 
cell.setCellStyle(dateStyle); 

Если кто-нибудь знает - как Сета значение ячейки даты в зависимости от пользователя локали, пожалуйста, ответ. Примечание. Если я использую «m/d/yy h: mm», то я не вижу свою дату в файле Excel (я вижу только строку «######» в ячейках). Спасибо.

ответ

3

Попробуйте развернуть ячейки. Иногда, если ширина ячейки слишком короткая, ###### рассматривается как выход. Чтобы получить локализованный шаблон, который вы можете увидеть это reference

+0

Хорошо, спасибо, я понимаю. Но мой основной вопрос - как установить дату в зависимости от локали пользователя в ячейках Excel? – VladislavLysov

0

Locale может быть установлен на formatListener

MissingRecordAwareHSSFListener listener = new MissingRecordAwareHSSFListener(this); 
formatListener = new FormatTrackingHSSFListener(listener, Locale.UK); 
+0

Знаете ли вы, как добиться этого в режиме SXSSF? –

2

Excel показывает даты и цифры в соответствии с языковыми параметрами машины, на которой открыт документ. Поэтому вам не нужно заботиться об этом.

В вашем коде используется шаблон «m/d/yy». Excel автоматически преобразует его в «dd.MM.yyyy» в локали de_DE, «dd/MM/yyyy» в локали «en_GB» и т. Д.

Вы можете проверить это изменение локали вашей машины (для Windows:Панель управления -> Часы, язык и регион -> Language -> Изменить дату, время или номер). Поскольку вы увидите, что один и тот же документ Excel будет отображаться по-разному для разных локалей.


О "######", вы можете использовать Sheet#autosizeColumn. Но будьте осторожны с ним, потому что, как это описано в документации:

«Этот процесс может быть относительно медленным на больших листах, так что это должно обычно вызывается только один раз в колонну, в конце вашего обработка "

Смежные вопросы