31

我可以让单元格格式化为日期,但我一直无法让单元格格式化为货币......任何人都有一个如何创建样式以使其正常工作的示例?我下面的代码显示了我正在创建的样式... 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"));

}
4

4 回答 4

50

在深入研究文档后,我找到了答案:

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

于 2008-11-26T06:33:11.180 回答
26

至少对于 Excel 2010:进入 Excel。按照你想要的方式格式化一个单元格。

在此处输入图像描述

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

在此处输入图像描述

复制粘贴它在 Type: 下顶行的文本到

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

例子:

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

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

于 2014-12-03T17:26:07.897 回答
6

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

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

O/P 为 416.00 美元

于 2012-03-28T12:33:15.307 回答
3

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

HSSFCellStyle cell = yourWorkBook.createCellStyle();
CreationHelper ch = yourWorkBook.getCreationHelper();
cell.setDataFormat(ch.createDataFormat().getFormat("#,##0.00;\\-#,##0.00"));
于 2015-02-09T16:37:02.763 回答