使用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。