POI默认格式问题

时间:2013-05-21 10:46:19

标签: apache-poi

我注意到,当使用POI创建电子表格时,为在逗号样式中设置的默认样式(在Excel中打开时设置并在Office 2007中单击“逗号样式”按钮时)会生成包含货币符号的格式(与Excel中逗号样式的定义相反)。

这种情况在源代码中没有任何格式更改代码时发生,因此它似乎内置于POI中,其效果是工作表范围。

通过创建此类文件并将单元格设置为Excel中的逗号样式,然后执行单元格格式(右键单击等),它似乎是自定义格式,格式为

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

在普通的Excel文件中,预期的格式是没有货币符号的会计。

有没有办法更改POI中的默认样式以纠正逗号样式的行为?

我正在使用NPOI 1.2.5(.NET Framework端口)对此进行测试,我认为它完全等同于派生的Apache POI表单。

2 个答案:

答案 0 :(得分:1)

我遇到了一些困难,找到了原因,我正在回答作为参考。

我正在使用NPOI的最新稳定版本。这是1.2.5。

检查源(在文件BuiltinFormats.cs中),定义了标准格式,我发现了以下内容

PutFormat(m, 0x2b, "_(\"$\"* #,##0.00_);_(\"$\"* (#,##0.00);_(\"$\"* \"-\"??_);_(@_)");
PutFormat(m, 0x2c, "_(* #,##0.00_);_(* (#,##0.00);_(* \"-\"??_);_(@_)");

在包含标准格式列表的http://support.microsoft.com/kb/147942中,有两个条目是

0x2b      _(* #,##0.00_);_(* (#,##0.00);_(* "-"??_);_(@_)
0x2c      _($* #,##0.00_);_($* (#,##0.00);_($* "-"??_);_(@_)

NPOI源中的这种反转似乎导致了逗号样式的无效行为。

答案 1 :(得分:1)

我遇到了同样的问题,可以确认问题已在3.10版本中修复