Подтвердить что ты не робот

Формат основной валюты Excel с помощью Apache POI

Я могу получить ячейки в формате Dates, но мне не удалось получить ячейки для форматирования в виде валюты... У кого-нибудь есть пример того, как создать стиль, чтобы заставить это работать? Мой код ниже показывает стили, которые я создаю... 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"));

}
4b9b3361

Ответ 1

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

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

Ответ 2

По крайней мере 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. Обратите внимание, что новый формат, который вы создали выше, заканчивается в настраиваемом диалоге с шага 2.

Ответ 3

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

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

O/P - $416,00

Ответ 4

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

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