6

我尝试使用 Apache POI 将数字转换为欧洲货币样式

HSSFDataFormat cf = workbook.createDataFormat();
currencyCellStyle = workbook.createCellStyle();
currencyCellStyle.setDataFormat(cf.getFormat("#.###,#0"));

例如,我有数字 2400 和 2.4

我想要的是 2400,00 和 2,40 。但是 POI 给了我 2400,0 和 2,40。当我尝试将其更改为

currencyCellStyle.setDataFormat(cf.getFormat("#.###,00"));

我得到的结果是 2400,00 和 2,400。那也不是我想要的。

是否有可能使两个值都正确?

谢谢和问候

4

3 回答 3

13

最后,Gagravarr 给出了解决这个问题的正确提示。

最终解决方案是:

HSSFDataFormat cf = workbook.createDataFormat();
currencyCellStyle = workbook.createCellStyle();
currencyCellStyle.setDataFormat(cf.getFormat("#,##0.00\\ _€"));

手动创建excel文件后出现了解决方案。然后由 Apache Poi 读取并提取格式字符串

 cell.getCellStyle().getDataFormatString() 

结果是#,##0.00\ _€</p>

所以我在上面的代码片段中使用了这种格式,它给出了正确的结果。

谢谢

于 2012-12-18T13:39:56.803 回答
3

对上述方法的更新:手动创建具有所需货币格式的 excel 文件后,可以在“自定义”类别下(在“格式单元格”对话框中)获取格式字符串。这样我们就不需要通过 poi 读取 excel 来获取这个字符串。

于 2013-08-20T09:27:29.643 回答
2

由于我的声誉,无法写评论。但是,如果您需要 Integer €,每个第三个数字都有点(例如 24.000.123 €),则模式为:

#,##0\ "€";\-#,##0\ "€"

所以设置格式:

cell.getCellStyle().setDataFormat(cf.getFormat("#,##0\\ \"€\";\\-#,##0\\ \"€\""));

希望这会有所帮助。

于 2019-05-09T13:37:02.533 回答