C#Excel百分比转换为小数

时间:2012-06-21 13:30:01

标签: c# excel formatting

我正在从Excel工作表中读取数据。一些数据是百分比值,这些值自动转换为小数 - 即90% - > 0.90。我似乎无法找到阻止这种情况发生的事情。此外,Excel表格字符串上的数据不是全部吗?那么为什么数字格式会发生呢?

感谢任何建议。

问候。

3 个答案:

答案 0 :(得分:3)

百分比是Excel中的格式设置工件。实际数字始终是小数部分(在您的情况下为0.9)。百分比只是在工作表上显示您的号码的一种方式。

如果您知道某列代表百分比,则应将其乘以100

答案 1 :(得分:2)

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

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

假设您使用的是Interop.Excel:

Range.NumberFormat属性返回与Excel中Format Cells对话框中使用的格式字符串相同的格式字符串。 Percentage只是0.00%类型格式字符串的快捷方式,其中decimal places类型中选择的Percentage只是改变格式小数点后的零数字符串。

enter image description here

MSDN - Range.NumberFormat

修改

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

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

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

答案 2 :(得分:0)

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