我正在从Excel工作表中读取数据。一些数据是百分比值,这些值自动转换为小数 - 即90% - > 0.90。我似乎无法找到阻止这种情况发生的事情。此外,Excel表格字符串上的数据不是全部吗?那么为什么数字格式会发生呢?
感谢任何建议。
问候。
答案 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
只是改变格式小数点后的零数字符串。
修改强>
如何查找一系列单元格格式的示例:
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%";