使用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中显示美元金额值,而无需单击单元格[重复]的主要内容,如果未能解决你的问题,请参考以下文章
使用 Apache Poi 如何创建多值电子表格单元格,以便在 MS Excel 中正确显示,而不仅仅是 OpenOffice