5

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

任何建议表示赞赏。

问候。

4

3 回答 3

3

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

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

于 2012-06-21T13:33:32.677 回答
2

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

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

假设您使用的是 Interop.Excel :

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

在此处输入图像描述

MSDN - Range.NumberFormat

编辑

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

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

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

于 2012-06-21T13:33:32.923 回答
0
ws.Cells[1, 1].NumberFormatLocal = XlConditionValueTypes.xlConditionValuePercent;
ws.Cells[1, 1].NumberFormat = "0,00%";
于 2015-09-24T12:01:23.987 回答