我使用EPPlus加载具有这种特殊格式的数字单元格的Excel文件:
00"."00"."00"."000"."0
因此,123456789
的单元格值在Excel上显示为01.23.45.678.9
它是一种物质编码标准。现在,我想使用EPPlus返回字符串中的格式化值。我对数值并不感兴趣。此外,我不想在我的代码中手动进行格式化,因为数字格式有时可能会有所不同。我该怎么做?
谢谢:)
答案 0 :(得分:1)
这看起来像EPPlus中的一个问题。 (更新:我提交了an issue。)
如果在调试器下使用EPPlus运行示例,您将看到EPPlus使用表达式d.ToString(format, nf.Culture)
从ExcelRangeBase.cs:965生成字符串值,其中d
是转换后的double值在您的单元格文本中,format
为"00.00.00.000.0"
,nf
为EPPlus ExcelFormatTranslator
(但后者对此特定问题并不重要)。
问题是自定义数字格式字符串中未文字化的.
被视为小数点。因此,此时EPPlus代码中format
的值应为"00'.'00'.'00'.'000'.'0"
。
我还不确定什么是最好的解决方案,但它看起来需要在ExcelNumberFormatXml.ExcelFormatTranslator.ToNetFormat
的某处进行更改。
与此同时,您无需在自己的代码中手动进行格式化。在调用Text
属性之前,您可以将数字格式设置为它应该是什么,例如:
range.Style.Numberformat.Format = "00'.'00'.'00'.'000'.'0";
现在range.Text
应该为您提供您期望的字符串。