2008-11-26 92 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"));