我正在从 Excel 工作表中读取数据。一些数据是百分比值,这些值会自动转换为小数 -- 即 90% --> 0.90。我似乎找不到任何办法来防止这种情况发生。另外,不是Excel工作表字符串上的所有数据吗?那么为什么会发生数字格式化呢?
任何建议表示赞赏。
问候。
我正在从 Excel 工作表中读取数据。一些数据是百分比值,这些值会自动转换为小数 -- 即 90% --> 0.90。我似乎找不到任何办法来防止这种情况发生。另外,不是Excel工作表字符串上的所有数据吗?那么为什么会发生数字格式化呢?
任何建议表示赞赏。
问候。
百分比是 Excel 中的一种格式化工件。实际数字始终是小数(0.9
在您的情况下)。百分比只是在工作表上显示您的数字的一种方式。
如果您知道一列代表百分比,则应将其乘以100
。
检查 Excel 工作表 - 如果单元格的格式设置为,Percentage
则数据仅显示为,例如:90.0%
,但存储为0.9
。
如果您在导入数字之前检查单元格格式,那么您可以处理所需的任何转换。
假设您使用的是 Interop.Excel :
该Range.NumberFormat
属性返回的格式字符串与您Format Cells
在 Excel 对话框中使用的格式字符串相同。 Percentage
只是一种类型的格式字符串的快捷方式,其中类型0.00%
中的decimal places
选定Percentage
项只是更改格式字符串中小数点后零的数量。
编辑
如何查找一系列单元格的格式的示例:
Worksheet wks = new Worksheet();
String nfmt = (string)((Range)wks.Cells[1,1]).NumberFormat;
Wherenfmt
将包含一个格式字符串,您可以检查该字符串%
以确定单元格(或范围)是否已格式化为以百分比形式显示分数。请注意,nfmt
如果NULL
范围跨越具有不同格式字符串的单元格!
ws.Cells[1, 1].NumberFormatLocal = XlConditionValueTypes.xlConditionValuePercent;
ws.Cells[1, 1].NumberFormat = "0,00%";