使用Apache POI在Excel中显示美元金额值而不单击单元格

时间:2014-12-09 09:50:45

标签: java apache-poi

我正在尝试使用POI在excel(.xlsx)工作表中显示带有美元货币符号的金额值。 我设置的实际值是:2156820.54和 我期待在excel中看到的是:$ 2,156,820.54

我在做

XSSFCellStyle curStyle = workbook.createCellStyle();
XSSFDataFormat df = workbook.createDataFormat();
curStyle.setDataFormat(df.getFormat("$#,#0.00"));
cell.setCellStyle(curStyle);
cell.setCellType(XSSFCell.CELL_TYPE_NUMERIC);
cell.setCellValue("2156820.54");

当我生成excel表并在MS Office excel中打开它时,单元格值仅显示2156820.54。但是,当我双击单元格并按Enter键或双击后单击该单元格时,单元格值将更改为$ 2,156,820.54。但是我想在打开Excel工作表时显示这个格式化的值,不需要单击单元格来完成格式化。

我也试过curStyle.setDataFormat((short)7);但同样的结果也是如此。这与我的格式化方式或与MS excel本身相关的问题有关吗?

1 个答案:

答案 0 :(得分:0)

您的问题是您将值设置为字符串。 Excel中的格式规则仅适用于数字,它们不适用于字符串

(在Excel中尝试 - 将两个单元格格式化为%,在另一个中输入1.5,在另一个中输入'1.5,并查看只有数字版本的格式化)

这一行:

cell.setCellValue("2156820.54");

将值设置为字符串,因为您正在解析字符串

相反,将其更改为

cell.setCellValue(2156820.54);

然后将应用单元格的格式规则,因为您将其设置为数字