Базовый формат валюты Excel с Apache POI - PullRequest
27 голосов
/ 26 ноября 2008

Я могу заставить ячейки форматировать как Даты, но я не могу заставить ячейки форматировать как валюту ... У кого-нибудь есть пример того, как создать стиль, чтобы заставить это работать? Мой код ниже показывает стили, которые я создаю ... styleDateFormat работает как чемпион, а styleCurrencyFormat не влияет на ячейку.

private HSSFWorkbook wb;
private HSSFCellStyle styleDateFormat = null;
private HSSFCellStyle styleCurrencyFormat = null;

......

public CouponicsReportBean(){
    wb = new HSSFWorkbook();
    InitializeFonts();

}

public void InitializeFonts()
{
    styleDateFormat = wb.createCellStyle();
    styleDateFormat.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy"));


    styleCurrencyFormat = wb.createCellStyle();
    styleCurrencyFormat.setDataFormat(HSSFDataFormat.getBuiltinFormat("$#,##0.00"));

}

Ответы [ 4 ]

40 голосов
/ 26 ноября 2008

Пройдя еще немного по документации, я нашел ответ:

http://poi.apache.org/apidocs/org/apache/poi/hssf/usermodel/HSSFDataFormat.html

Просто нужно найти подходящий заранее заданный формат и ввести код.

    styleCurrencyFormat.setDataFormat((short)8); //8 = "($#,##0.00_);[Red]($#,##0.00)"

Вот еще примеры: http://www.roseindia.net/java/poi/setDataFormat.shtml

16 голосов
/ 03 декабря 2014

По крайней мере, Excel 2010: Зайдите в Excel. Отформатируйте ячейку так, как вы хотите.

enter image description here

Затем вернитесь в диалог форматирования. Выберите пользовательский.

enter image description here

Скопируйте и вставьте текст в верхнем ряду под Тип: в

createHelper.createDataFormat().getFormat("<here>");

Пример:

createHelper.createDataFormat().getFormat("_($* #,##0.00_);_($* (#,##0.00);_($* \"-\"??_);_(@_)"); //is the "Accounting" format.

Удостоверьтесь, что вы устанавливаете свои ячейки, используя двойные. Использование индекса может вызвать проблемы с различными версиями Excel. Обратите внимание, что новый формат, который вы создаете выше, заканчивается в пользовательском диалоге, начиная со второго шага.

6 голосов
/ 28 марта 2012

Просто обновление на ответ выше. короткий «8» не работает для меня, но «7» работает.

cell.setCellValue(416.17);      
cellStyle.setDataFormat((short)7);
cell.setCellStyle(cellStyle);

O / P составляет $ 416,00

3 голосов
/ 09 февраля 2015

Этот код можно использовать для форматирования ячейки в режиме валюты (с разделителем thowsand, как в Бразилии или Германии. Например, 12.345,67):

HSSFCellStyle cell = yourWorkBook.createCellStyle();
CreationHelper ch = yourWorkBook.getCreationHelper();
cell.setDataFormat(ch.createDataFormat().getFormat("#,##0.00;\\-#,##0.00"));
...