我能够将单元格格式化为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"));
}
答案 0 :(得分:40)
在仔细阅读文档之后,我找到了答案:
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
答案 1 :(得分:16)
至少对于Excel 2010: 进入Excel。按照您希望的方式格式化单元格。
然后返回格式对话框。选择自定义。
将其所拥有的文字复制粘贴到Type:into
下的顶行createHelper.createDataFormat().getFormat("<here>");
示例:
createHelper.createDataFormat().getFormat("_($* #,##0.00_);_($* (#,##0.00);_($* \"-\"??_);_(@_)"); //is the "Accounting" format.
确保使用double设置填充单元格。 使用索引可能会导致不同版本的Excel出现问题。请注意,您在上面创建的新格式最终会出现在第二步的自定义对话框中。
答案 2 :(得分:6)
只是对上述回复的更新。短'8'对我不起作用,但'7'不起作用。
cell.setCellValue(416.17);
cellStyle.setDataFormat((short)7);
cell.setCellStyle(cellStyle);
O / P是$ 416.00
答案 3 :(得分:3)
您可以尝试使用此代码以货币模式格式化您的单元格(使用千位分隔符,如巴西或德国使用。例如12.345,67):
HSSFCellStyle cell = yourWorkBook.createCellStyle();
CreationHelper ch = yourWorkBook.getCreationHelper();
cell.setDataFormat(ch.createDataFormat().getFormat("#,##0.00;\\-#,##0.00"));