Apache POI的基本Excel货币格式

我能够将单元格格式化为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")); } 

在仔细阅读文档之后,我找到了答案:

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

至少对于Excel 2010:进入Excel。 按照您希望的方式格式化单元格。

在此处输入图像描述

然后回到格式对话框。 选择自定义。

在此处输入图像描述

将其所拥有的文本复制粘贴到Type:into下的顶行

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

例:

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

确保使用double设置填充单元格。 使用索引可能会导致不同版本的Excel出现问题。 请注意,您在上面创建的新格式最终会出现在第二步的自定义对话框中。

只是对上述回复的更新。 短’8’对我不起作用,但’7’不起作用。

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

O / P是416.00美元

您可以尝试使用此代码以货币模式格式化您的单元格(使用像巴西或德国一样的thowsand分隔符。例如12.345,67):

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