C#Excel百分比转换为小数

我正在从Excel工作表中读取数据。 一些数据是百分比值,这些值会自动转换为小数 – 例如90% – > 0.90。 我似乎无法find保持这种情况发生。 另外,Excel工作表string中的数据不是全部吗? 那为什么数字格式化会发生呢?

任何意见表示赞赏。

问候。

检查Excel工作表 – 如果单元格格式为Percentage则数据仅显示为,例如: 90.0% ,但存储为0.9

如果您在导入数字之前检查单元格格式,则可以处理任何所需的转换。

假设您正在使用Interop.Excel:

Range.NumberFormat属性返回您在Excel中的“ Format Cells对话框中使用的相同格式string。 Percentage只是0.00%types的格式string的快捷方式,其中在Percentagetypes中select的decimal places仅改变格式string中小数点后的零的数目。

在这里输入图像说明

MSDN – Range.NumberFormat

编辑

如何find一系列单元格的格式示例:

 Worksheet wks = new Worksheet(); String nfmt = (string)((Range)wks.Cells[1,1]).NumberFormat; 

其中nfmt将包含格式string,您可以检查%以确定单元格(或范围)是否被格式化为以百分比forms显示分数。 请注意,如果范围跨越具有不同格式string的单元格,则nfmt将为NULL

百分比是Excel中的格式化工件。 实际的数字总是一个小数(在你的情况下是0.9 )。 百分比只是在工作表上显示您的号码的一种方法。

如果你知道一列代表的百分比,你应该乘以100

 ws.Cells[1, 1].NumberFormatLocal = XlConditionValueTypes.xlConditionValuePercent; ws.Cells[1, 1].NumberFormat = "0,00%";