2008-11-26 94 views
21

我可以将单元格格式化为日期,但我一直无法将单元格设置为货币格式......任何人都有如何创建样式以获取单元格的示例这工作?下面的代码显示了我创建的样式... styleDateFormat像champ一样工作,而styleCurrencyFormat对单元格没有影响。使用Apache POI的基本Excel货币格式

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")); 

} 
+0

这将是冷静,如果你能接受你的有时候会自己回答。 ;) – 2011-06-30 11:37:55

回答

35

通过文档多一点挖后,我找到了答案:

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

+0

感谢您发布此! – 2009-09-10 20:47:23

+3

内置格式列表在这里:https://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/BuiltinFormats.html – bradvido 2014-12-08 21:28:35

+0

输出看起来不错。请原谅我,但如果我在Excel中点击“格式化单元格”,我只会看到它属于“自定义”类别。现在我怎样才能将它归入“货币”类别? – user3454439 2017-07-26 04:52:04

5

只是一个更新上述答复。短'8'不适合我,但'7'确实如此。

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

O/P为$ 416.00

12

对于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

你可以试试这个代码格式化与货币模式的细胞(。像巴西或德国例如使用thowsand分离12.345,67):

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