Basic Excel currency format with Apache POI

后端 未结 4 1413
萌比男神i
萌比男神i 2020-12-01 06:16

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?

相关标签:
4条回答
  • 2020-12-01 06:49

    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

    0 讨论(0)
  • 2020-12-01 06:52

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

    enter image description here

    Then go back into the format dialogue. Select custom.

    enter image description here

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

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

    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.

    0 讨论(0)
  • 2020-12-01 07:05

    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

    0 讨论(0)
  • 2020-12-01 07:10

    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"));
    
    0 讨论(0)
提交回复
热议问题