【问题标题】:How do I get the value of a cell by row index and column index如何通过行索引和列索引获取单元格的值
【发布时间】:2012-08-10 02:25:45
【问题描述】:

目前我正在这样做:

string cellValue = sheet.get_Range("A12", _missing).Value2.ToString();

这可行,但我确实需要按行和列索引选择一个单元格。

我尝试时得到一个空异常

string cellValue = ((Range)sheet.Cells[row, column]).Value2.ToString();

有什么想法吗?

【问题讨论】:

标签: c# excel


【解决方案1】:

ArgumentNullException 出现在哪里?尝试像这样分离您的代码并逐步执行:

object rangeObject = sheet.Cells[row, column];
Range range = (Range)rangeObject;
object rangeValue = range.Value2;
string cellValue = rangeValue.ToString();

这会告诉你空对象在哪里。

【讨论】:

  • NullReferenceException 发生在字符串 cellValue = rangeValue.ToString();因为 range.Value2 为空。我知道我的工作表很好,但我认为 sheet.Cells[row, column] 是真正的罪魁祸首。
  • 我认为,空 range.Value2 表示该单元格没有值。如果您查看 Excel 中的单元格,它是空的吗?
  • 此外,Excel 互操作使用基于 1 的索引。问题可能是您正在使用引用空单元格的从零开始的索引。如果是这种情况,那么您需要做的就是使用row + 1column + 1 来获取正确的单元格。
  • 您也可以尝试使用 get_value 而不是 Value2
【解决方案2】:

我有同样的问题。当我正在阅读的单元格为空时,会发生 nullref。

string foo = (((Range) ActiveWorksheet.Cells[row, column]).Value2 != null
            ? ((Range) ActiveWorksheet.Cells[row, column]).Value2.ToString()
            : "Coalesce some false string here..."); 

请注意,在尝试转换或强制转换值之前,必须检查 null。

【讨论】:

    猜你喜欢
    • 2020-07-27
    • 1970-01-01
    • 1970-01-01
    • 2021-03-21
    • 2013-06-24
    • 2012-07-18
    • 1970-01-01
    • 1970-01-01
    • 2016-08-28
    相关资源
    最近更新 更多