Basic Excel currency format with Apache POI

匿名 (未验证) 提交于 2019-12-03 01:23:02

问题:

I'm able to get cells to format as Dates, but I've been unable to get cells to format as currency... Anyone have an example of how to create a style to get this to work? My code below show the styles I'm creating... the styleDateFormat works like a champ while styleCurrencyFormat has no affect on the cell.

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:

After digging through the documentation a bit more, I found the answer:

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

Just need to find an appropriate pre-set format and supply the code.

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

Here are more examples: http://www.roseindia.net/java/poi/setDataFormat.shtml



回答2:

For at least Excel 2010: Go into Excel. Format a cell they way you want it.

Then go back into the format dialogue. Select custom.

Copy paste the text it has on the top row under Type: into

createHelper.createDataFormat().getFormat(""); 

Example:

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

Make sure you set your populate your cells by using a double. Using the index may cause problems with different versions of Excel. Note that the new format you create above ends up in the custom dialogue from step two.



回答3:

Just an update to above reply. short '8' doesn't work for me but the '7' does.

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

O/P is $416.00



回答4:

You can try this code to format your cell with currency mode (with thowsand separator like used in Brazil or Germany. Eg. 12.345,67):

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


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!