1

我想在 Excel 中将“2655.32”输出为“$2,655.32”。

这是代码片段:

case 0:
    HSSFCellStyle style;
    style.setAlignment(HSSFCellStyle.ALIGN_RIGHT);
    style.setDataFormat((short) 7);
    cell.setCellValue(new HSSFRichTextString("2655.32"));
    cell.setCellStyle(style);
break;

生成的excel单元格不显示“$”或千分号“,”,并且有错误检查警告,“此单元格中的数字格式为文本或前面有撇号。我可以通过double得到我想要的单击单元格让excel修复它,“$”和“,”将出现。

我知道我可以使用 cell.setCellValue(Double.parse("2655.32")) 将字符串解析为双精度来解决这个问题,但如果是这样,我必须确保该值是可解析的,并将 try catch 块添加到我的每个 switch case,这是非常重复的。

我想知道是否有办法将这种数字字符串输出为文本并同时保持货币格式?像这样 $2,655.32

4

2 回答 2

2

是解决问题的好教程。HSSFDataFormat有一些内置格式。使用该格式#,##0.0应该可以解决您的问题,如下所示:

 HSSFCellStyle cs = hssfworkbook.createCellStyle();
 HSSFDataFormat df = hssfworkbook.createDataFormat();
 cs.setDataFormat(df.getFormat("#,##0.0")); //or cs.setDataFormat((short)7);
 cell.setCellValue(2655.32);
 cell.setCellStyle(cs);

谢谢!

于 2013-03-12T17:24:10.283 回答
0
cell.setCellValue(416.17);      
cellStyle.setDataFormat((short)7);
cell.setCellStyle(cellStyle);
于 2013-03-12T17:03:18.453 回答