使用EPPlus,如何返回由Excel格式化的单元格值?

时间:2014-07-30 08:52:43

标签: excel epplus

我使用EPPlus加载具有这种特殊格式的数字单元格的Excel文件:

00"."00"."00"."000"."0

因此,123456789的单元格值在Excel上显示为01.23.45.678.9

它是一种物质编码标准。现在,我想使用EPPlus返回字符串中的格式化值。我对数值并不感兴趣。此外,我不想在我的代码中手动进行格式化,因为数字格式有时可能会有所不同。我该怎么做?

谢谢:)

1 个答案:

答案 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应该为您提供您期望的字符串。