我尝试使用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和2400。这也不是我想要的。
有没有可能让两个值都正确?
Thx和问候
发布于 2012-12-18 21:39:57
最后,Gagravarr给出了解决这个问题的正确提示。
最终的解决方案是:
HSSFDataFormat cf = workbook.createDataFormat();
currencyCellStyle = workbook.createCellStyle();
currencyCellStyle.setDataFormat(cf.getFormat("#,##0.00\\ _€"));解决方案是在手动创建excel文件后出现的。然后用Apache Poi读入并提取格式字符串
cell.getCellStyle().getDataFormatString() 结果是#,##0.00\ _€
因此,我在上面的代码片段中使用了这种格式,它给出了正确的结果。
Thx
发布于 2013-08-20 17:27:30
对上述方法的更新:手动创建具有所需货币格式的excel文件后,可以在“自定义”类别下(在“格式单元格”对话框中)获取格式字符串。这样我们就不需要通过poi读取excel来获得这个字符串。
发布于 2019-05-09 21:37:03
由于我的名声,我不能写评论。但是,如果您需要每个第三个数字都带有点的整数欧元(例如24.000.123欧元),则模式为:
#,##0\ "€";\-#,##0\ "€"所以设置格式:
cell.getCellStyle().setDataFormat(cf.getFormat("#,##0\\ \"€\";\\-#,##0\\ \"€\""));希望这能对你有所帮助。
https://stackoverflow.com/questions/13838495
复制相似问题