【问题标题】:Keep cells format while getting cells values from Excel从 Excel 获取单元格值时保持单元格格式
【发布时间】:2017-11-16 20:20:39
【问题描述】:

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

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

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

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

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

那么,我怎样才能在数字中保留百分比?

【问题讨论】:

标签: c# excel


【解决方案1】:

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

如果您使用 interop API,则需要做一些额外的工作。

  • 如果范围内的所有单元格都设置为百分比格式,那么您可以使用Range.NumberFormat 获取格式,然后您可以将每个单元格的值乘以 100 并在末尾附加“%”字符。
  • Range.NumberFormat 将返回 null,如果范围内的单元格属于不同类型。那么您需要遍历该特定范围内的每个单元格。检查特定单元格的 NumberFormat(例如 ((Range)wks.Cells[1,1]).NumberFormat)并执行相应的操作。

【讨论】:

  • 我没有 Cells.GetFormattedString() 方法。
  • 我正在使用 Microsoft.Office.Interop.Excel
  • 好的,谢谢。我知道对于互操作,我可以遍历每个单元格。有了这个: Cells.Text ,我得到了正确的格式。我担心迭代会花费我太多时间,但幸运的是不会,因为工作表中没有太多使用的单元格。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多