首页 文章

使用Apache POI在excel中显示美元金额值而不单击单元格[重复]

提问于
浏览
2

这个问题在这里已有答案:

我正在尝试使用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

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

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

    这一行在这里:

    cell.setCellValue("2156820.54");
    

    将值设置为字符串,因为您要在字符串中进行解析

    相反,将其更改为

    cell.setCellValue(2156820.54);
    

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

相关问题