我尝试使用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。 那也不是我想要的。
是否有可能让两个值都正确?
Thx和Greetings
答案 0 :(得分:10)
最后,Gagravarr给出了解决这个问题的正确提示。
最终的解决方案是:
HSSFDataFormat cf = workbook.createDataFormat();
currencyCellStyle = workbook.createCellStyle();
currencyCellStyle.setDataFormat(cf.getFormat("#,##0.00\\ _€"));
手动创建excel文件后出现了解决方案。 然后由Apache Poi和它读取 使用
提取格式字符串 cell.getCellStyle().getDataFormatString()
结果是#,## 0.00 \ _€
所以我在上面的代码片段中使用了这种格式,它给出了正确的结果。
Thx
答案 1 :(得分:3)
上述方法的更新: 手动创建具有所需货币格式的Excel文件后,可以在“自定义”类别下(在“单元格格式”对话框中)获取格式字符串。这样我们就不需要通过poi读取excel来获取这个字符串了。
答案 2 :(得分:1)
由于我的声誉而无法发表评论。但是,如果您需要每个第三个数字都带点的Integer€(例如24.000.123€),则模式为:
#,##0\ "€";\-#,##0\ "€"
因此设置格式:
cell.getCellStyle().setDataFormat(cf.getFormat("#,##0\\ \"€\";\\-#,##0\\ \"€\""));
希望这会有所帮助。