繁体   English   中英

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

[英]Apache POI, force currency format with two decimal points

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

我设法产生样式格式:

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

但是,一旦在Excel中执行,我将收到以下错误,我希望摆脱该错误:

错误: some number formats may have been lost

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

我试图找到有关Apache POI格式的图例,但没有成功。

将评论转换为答案。 保留评论,因为它们可能更易于阅读

首先,以下格式应用于货币

_($* #,##0.00_);_($* (#,##0.00);_($* \"-\"??_);_(@_)

(此格式直接来自excel,因此可以100%使用)。

现在我们有了格式,让我们看一下遇到的货币问题。 以下代码显示所有货币及其符号/符号:

for (Currency c : Currency.getAvailableCurrencies()) {
    System.out.println(c.getCurrencyCode() + " : " + c.getSymbol());
}

从中可以看出,只有USD具有“真实”符号,而该类别中的所有其他货币仅具有其货币代码作为符号。 这似乎是这里的实际问题。 使用此代码:

String format = "_(<ccy>* #,##0.00_);_(<ccy>* (#,##0.00);_(<ccy>* \\\"-\\\"??_);_(@_)";
style.setDataFormat(wb.createDataFormat().getFormat(format.replace("<ccy>", "€")));

我们可以看到,它确实适用于实际的符号,但是如果将符号替换为其货币代码,则该符号将失败。 这导致OP检查excel,他发现excel本身提供了BGN的货币格式,但毕竟apache-poi不是excel。

只要提供了正确的符号,此提供的格式就可以使用大多数货币。 我从该站点检查了几种货币符号,发现并非所有货币符号都受支持。 Дин. 起作用,而CHFRD$都失败。 将来可能会更改。


请注意,我使用apache-poi 3.15对其进行了测试。 这在3.17中可能已经更好了

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM