Range.address与range.cell 地址不匹配

我正在使用2012年11月发布的用于Visual Studio 2012的Office开发工具为Excel 2013开发VSTO插件。

我有一个工作表的参考,我想访问一个范围内的单元格的值。 这应该是一个简单的任务,但由于某种原因,我试图访问的单元格实际上比范围高一行。 我不确定是什么原因造成的,或者如果我以错误的方式来解决这个问题。 下面的简单例子解释了我看到的行为。

var dataEntrySheet = (Worksheet)Globals.ThisAddIn.Application.Worksheets["Data Entry"]; var rangeAddress = dataEntrySheet.Range["A2"].Address var cellAddress = dataEntrySheet.Range["A2"].Cells[0].Address 

以上的结果是:

rangeAddress =“$ A $ 2”

cellAddress =“$ A $ 1”

有谁知道这是为什么发生?

这是因为在这里索引:

 Cells[0] 

在excel中访问行和列时,索引从1开始。所以0实际上是一行。 如果你愿意:

 var cellAddress = dataEntrySheet.Range["A1"].Cells[0].Address 

你实际上会得到一个exception,试图访问一个不存在的行。 您甚至可以使用负面索引来访问更进一步的行。