使用EPPlus,我如何返回单元格值,因为它已被格式化为Excel?

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

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

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

这是一种材料编码标准。 现在,我想使用EPPlus来返回string中的格式化值。 我对数值没有真正的兴趣。 此外,我不想在我的代码中手动进行格式设置,因为数字格式有时可能会有所不同。 我将如何做到这一点?

谢谢 :)

这在EPPlus中看起来像一个问题。 ( 更新 :我提出了一个问题 。)

如果使用EPPlus在debugging器下运行示例,则会看到EPPlus正在使用expression式d.ToString(format, nf.Culture)从ExcelRangeBase.cs:965中生成string值d.ToString(format, nf.Culture)其中d是您的转换后的double值单元格的文本, format"00.00.00.000.0"nf是一个EPPlus ExcelFormatTranslator (但后者对这个特定的问题并不重要)。

问题是这是一个没有文字的. 在自定义数字格式中,string被取为小数点。 所以EPPlus代码中此时format的值应该是"00'.'00'.'00'.'000'.'0"

我不知道什么是最好的解决办法,但它看起来需要在ExcelNumberFormatXml.ExcelFormatTranslator.ToNetFormat某处进行ExcelNumberFormatXml.ExcelFormatTranslator.ToNetFormat

同时,您不必在自己的代码中手动进行格式设置。 在调用Text属性之前,可以将数字格式设置为它应该是的格式,例如:

 range.Style.Numberformat.Format = "00'.'00'.'00'.'000'.'0"; 

现在range.Text应该给你你期望的string。