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

Posted

技术标签:

【中文标题】使用Apache POI在excel中显示美元金额值,而无需单击单元格[重复]【英文标题】:Display dollar amount value in excel using Apache POI without clicking in the cell [duplicate] 【发布时间】:2014-12-09 09:50:45 【问题描述】:

我正在尝试使用 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 本身相关的问题?

【问题讨论】:

这可能对你有帮助***.com/questions/19186898/… 感谢您的回复。我试过了,但它所做的唯一额外的事情就是对齐。我仍然需要在单元格中双击才能看到格式化的金额值。 【参考方案1】:

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

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

这里的这一行:

cell.setCellValue("2156820.54");

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

改为

cell.setCellValue(2156820.54);

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

【讨论】:

谢谢@Gagravarr。设置字符串值是一个问题。通过将数值设置为单元格格式现在正在发生。

以上是关于使用Apache POI在excel中显示美元金额值,而无需单击单元格[重复]的主要内容,如果未能解决你的问题,请参考以下文章

java poi导出excel问题

使用 Apache Poi 如何创建多值电子表格单元格,以便在 MS Excel 中正确显示,而不仅仅是 OpenOffice

Apache POI - Java Excel APIs

java poi导出excel要双击才显示换行?

java poi读取excel含小数列时,与excel显示不一样

java中如何在JTable中显示excel数据