POI默认格式问题

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

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

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

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

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

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

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

回答(2)

2 years ago

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

我正在使用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源中的这种反转似乎导致逗号样式的无效行为 .

2 years ago

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