从Excel获取单元格值时保持单元格格式

时间:2017-11-16 08:13:33

标签: c# excel

我使用以下方法将excel文件中的单元格值转换为对象矩阵:

Object[,] values = (Object[,])worksheet.UsedRange.Cells.Value;

问题是因为在excel中我有时会有十进制数字,有时会有百分比数字。

调用Cells.Value时,我得到十进制格式的百分比数字。对于数字为60.32%的示例,我得到0.6032的值,我想保持这种十进制格式并得到60.32%。

我已尝试使用worksheet.UsedRange.Cells.Text,但它返回null,因为UsedRange.Cells在Excel中具有不同的格式。

那么,我怎么能保持这个数字的百分比呢?

1 个答案:

答案 0 :(得分:0)

对于 ClosedXML API:而不是UsedRange.Cells.Value尝试使用UsedRange.Cells.GetFormattedString()

如果您正在使用互操作 API,则需要做一些额外的工作。

  • 如果范围内的所有单元格都被格式化为百分比,那么您可以使用Range.NumberFormat获取格式,然后相应地您可以将每个单元格值乘以100并附加'%'角色到底。 如果范围内的单元格具有不同的类型,则
  • Range.NumberFormat将返回null。然后,您需要遍历该特定范围内的每个单元格。检查特定单元格的NumberFormat(例如 ((Range)wks.Cells[1,1]).NumberFormat)并相应地执行操作。