我正在尝试使用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本身相关的问题有关吗?
答案 0 :(得分:0)
您的问题是您将值设置为字符串。 Excel中的格式规则仅适用于数字,它们不适用于字符串
(在Excel中尝试 - 将两个单元格格式化为%,在另一个中输入1.5
,在另一个中输入'1.5
,并查看只有数字版本的格式化)
这一行:
cell.setCellValue("2156820.54");
将值设置为字符串,因为您正在解析字符串
相反,将其更改为
cell.setCellValue(2156820.54);
然后将应用单元格的格式规则,因为您将其设置为数字