Apache POI,强制货币格式有两个小数点

我尝试强制 Apache POI 生成两位数的货币格式。

我设法生成样式格式:

cellStyle.setDataFormat(wb.createDataFormat().getFormat("$#,##0.00"))

但是,一旦在 Excel 中执行,我收到以下错误,我想摆脱它:

错误:some number formats may have been lost

数字似乎有 2 个小数点到 5 个小数点。

我试图找到 apache POI 格式的传说,但没有成功。


qq_笑_17
浏览 249回答 1
1回答

一只名叫tom的猫

将评论转换为答案。保留评论,因为它们可能更容易跟进首先,货币应使用以下格式_($*&nbsp;#,##0.00_);_($*&nbsp;(#,##0.00);_($*&nbsp;\"-\"??_);_(@_)(此格式直接来自 excel,因此其工作 100%)。现在我们有了格式,让我们来看看遇到的货币问题。以下代码显示了所有货币及其符号/符号:for&nbsp;(Currency&nbsp;c&nbsp;:&nbsp;Currency.getAvailableCurrencies())&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;System.out.println(c.getCurrencyCode()&nbsp;+&nbsp;"&nbsp;:&nbsp;"&nbsp;+&nbsp;c.getSymbol());}从中我们可以看出,它只有USD一个“真实”符号,而该类中的所有其他货币都只有它们的货币代码作为符号。这似乎是这里的实际问题。使用此代码:String&nbsp;format&nbsp;=&nbsp;"_(<ccy>*&nbsp;#,##0.00_);_(<ccy>*&nbsp;(#,##0.00);_(<ccy>*&nbsp;\\\"-\\\"??_);_(@_)"; style.setDataFormat(wb.createDataFormat().getFormat(format.replace("<ccy>",&nbsp;"€")));我们可以看到,它确实适用于实际符号,但如果符号被其货币代码替换,则会失败。这导致OP检查excel,他发现excel本身提供了一种货币格式BGN,但毕竟apache-poi不是excel。只要提供了正确的符号,此提供的格式将适用于大多数货币。我检查了这个网站上的几种货币符号,发现并非所有货币符号都受支持。Дин.而工程CHF和RD$都失败。这在未来可能会改变。请注意,我使用apache-poi 3.15.&nbsp;这可能已经在 3.17 中更好用了
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java