如何通过行索引和列索引获取单元格的值

7

目前我正在做这个:

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

这个可以工作但是我真的需要通过行和列索引来选择单元格。

当我尝试时会获得一个空指针异常。

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

有什么想法吗?


2个回答

8

ArgumentNullException 是在哪里发生的?尝试像这样分离你的代码并逐步调试:

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

这将向您展示空对象的位置。

由于range.Value2为空,所以NullReferenceException发生在以下代码:string cellValue = rangeValue.ToString();我知道我的工作表没问题,但我认为sheet.Cells[row, column]是真正的罪魁祸首。 - CurlyFro
我认为,如果一个范围的Value2为空,那么单元格就没有值。如果你看一下Excel中的单元格,它是空的吗? - Zach Johnson
2
另外,Excel interop使用基于1的索引。问题可能是您正在使用基于0的索引来引用空单元格。如果是这种情况,那么您只需要使用row + 1column + 1即可获取正确的单元格。 - Zach Johnson
你可以尝试使用get_value而不是Value2。 - Stan R.

0

我遇到了同样的问题。当我读取的单元格为空时,会发生空引用错误。

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接