Формат основной валюты 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"));
}
Ответы
Ответ 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"));