Преобразование комментариев в ответ. Сохранение комментариев, так как они могут быть легче следовать через
Прежде всего, следующий формат должен использоваться для валют
_($* #,##0.00_);_($* (#,##0.00);_($* \"-\"??_);_(@_)
(этот формат взят прямо из Excel, поэтому он работает на 100%).
Теперь, когда у нас есть формат, давайте взглянем на возникшую проблему с валютой. Следующий код показывает все валюты с их символом / знаком:
for (Currency c : Currency.getAvailableCurrencies()) {
System.out.println(c.getCurrencyCode() + " : " + c.getSymbol());
}
Из этого мы можем видеть, что только USD
имеет «реальный» символ, в то время как все другие валюты в этом классе имеют только свой код валюты в качестве символа. Это, кажется, актуальная проблема здесь. Используя этот код:
String format = "_(<ccy>* #,##0.00_);_(<ccy>* (#,##0.00);_(<ccy>* \\\"-\\\"??_);_(@_)";
style.setDataFormat(wb.createDataFormat().getFormat(format.replace("<ccy>", "€")));
мы видим, что он работает с реальными символами, но не работает, если символы заменяются их кодами валют. Это заставило OP проверить Excel и он обнаружил, что Excel сам по себе предлагает формат валюты для BGN
, но, в конце концов, apache-poi
не является Excel.
Этот предоставленный формат будет работать с большей частью валюты, если указан соответствующий символ. Я проверил несколько символов валюты с этого сайта и обнаружил, что поддерживаются не все символы валют. Дин.
работает, а CHF
и RD$
оба не работают. Это может быть изменено в будущем.
Обратите внимание, что я проверил это с apache-poi 3.15
. Это может уже работать лучше в 3.17