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的快捷方式,其中在Percentage
types中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%";