Java ApachePOI货币数据格式
我尝试使用ApachePOI将数字转换为欧洲货币样式Java ApachePOI货币数据格式,java,apache-poi,Java,Apache Poi,我尝试使用ApachePOI将数字转换为欧洲货币样式 HSSFDataFormat cf = workbook.createDataFormat(); currencyCellStyle = workbook.createCellStyle(); currencyCellStyle.setDataFormat(cf.getFormat("#.###,#0")); 例如,我有2400和2.4 我想要的是2400,00和2,40。 但是POI给了我2400,0和2,40。 当我试着把它改成 cur
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和问候最后Gagravarr给出了解决这个问题的正确建议 最后的解决办法是:
HSSFDataFormat cf = workbook.createDataFormat();
currencyCellStyle = workbook.createCellStyle();
currencyCellStyle.setDataFormat(cf.getFormat("#,##0.00\\ _€"));
手动创建excel文件后,出现了解决方案。
然后由ApachePOI和
使用
cell.getCellStyle().getDataFormatString()
结果是0.00欧元
所以我在上面的代码片段中使用了这种格式,它给出了正确的结果
Thx是对上述方法的更新:
手动创建具有所需货币格式的excel文件后,可以在“自定义”类别下(在“格式单元格”对话框中)获取格式字符串。这样我们就不需要通过poi读取excel来获取此字符串 由于我的声誉,无法发表评论。但是,如果您需要每第三个数字带有点的整数欧元(例如24.000.123欧元),则模式为:
#,##0\ "€";\-#,##0\ "€"
因此,设置格式:
cell.getCellStyle().setDataFormat(cf.getFormat("#,##0\\ \"€\";\\-#,##0\\ \"€\""));
希望这会对您有所帮助。我认为您需要将格式字符串设置为US/UK样式,然后在欧洲地区的Excel副本中打开该文件,它将按照您的预期呈现。你试过了吗?thx部分有效。使用“#,#####.#0”时,逗号和点以欧式样式设置,在excel中打开时会更改为2.400,0。但我在逗号后只得到一个零。输入的数字是2400。如果您在Excel中创建一个新文件,按照您想要的方式设置样式,然后将其加载到Apache POI中并读取格式字符串,会发生什么情况?非常好。我创建了一个excel文件,并将单元格的样式设置为两位数的货币。然后,我用ApachePOI读取文件,用cell.getCellStyle().getDataFormatString()读取单元格样式,结果返回“#,##0.00 \€”,因此我将此格式添加为我的格式字符串。因此,我使用了cf.getFormat(“#,###0.00\\\\\\ u€”),它工作得非常好。从未在其他地方见过使用欧元符号和下划线的格式。最好将其添加为答案,这样每个人都知道它已解决!嗨,我有你同样的问题。阅读此页时,我得到了格式字符串,将其设置为currencyCellStyle变量,但我不知道如何使用它读取正确的值。cell.getNumericCellValue()?cell.getStringCellValue()?您能解释一下您是如何使用刚才设置的数据格式读取单元格值的吗?谢谢。我还想补充一点,我需要读取的单元格既有数字也有计算过的,所以也有公式需要计算。我有一个HSSFFormulaEvaluator来评估它们,但结果仍然与Excel显示的结果不一致(我说的是精度和舍入)。嗨,对不起,我想我帮不了你,因为我没有读取单元格值。我只是在用setCellValue写作。例如cell.setCellStyle(currencyCellStyle)和cell.setCellValue(value)好的提示。就我而言,
###0,00€-# ##0,00 €;- 欧元
是,#0.00 \“€”\-\##0.00\ "€";\-\ “€”
所以在Java中它是getFormat(“\\”、“\\”、“\\-\”、“\\-\”、“\\”、“\\-\”)