Я использую Apache POI, чтобы изменить файл Excel и поместить в него некоторые данные. Большая часть того, что я пробую, идет хорошо. Однако форматирование моей валюты не выполняется на 100% правильно ...
Я хочу, чтобы мои валюты были отформатированы как € 1.000,43
. Таким образом, знак евро слева, сумма справа с точкой в качестве разделителя тысяч, запятая в качестве десятичного разделителя и два десятичных знака.
Если я делаю это в Excel и применяю это правило пользовательского форматирования, это работает: "_ [$€-nl-BE] * #.##0,00_ ;_ [$€-nl-BE] * -#.##0,00_ ;_ [$€-nl-BE] * \"-\"??_ ;_ @_ "
Итак, я просто скопировал это правило и применил его через Apache POI:
XSSFDataFormat dataFormat = (XSSFDataFormat) workbook.createDataFormat();
cellStyle.setDataFormat(dataFormat.getFormat("_ [$€-nl-BE] * #.##0,00_ ;_ [$€-nl-BE] * -#.##0,00_ ;_ [$€-nl-BE] * \"-\"??_ ;_ @_ "));
Однако это приводит к чему-то немного другому: € 1.000,4300
. Вы можете видеть, что все идет хорошо, за исключением десятичных дробей. Есть 4 вместо 2 ... Когда я смотрю в Excel на пользовательское форматирование, оно также немного отличается (обратите внимание на 4 нуля): _ [$€-nl-BE] * #.##0,00000_ ;_ [$€-nl-BE] * -#.##0,00000_ ;_ [$€-nl-BE] * "-"?????_ ;_ @_
Так что мне интересно, что может быть не так, что где-то кто-то (либо Apache POI, либо Excel) поставил 4 десятичных знака вместо 2, которые я определил. Обратите внимание, что если я изменю его в Excel на 2 десятичных знака, он снова будет отображаться правильно. Даже после сохранения и закрытия и повторного открытия документа.