Свойство Excel.Range.Count сообщает, сколько ячеек находится в диапазоне.Например:
if (targetRange.Count > 1)
{
throw new ArgumentException(...);
}
Индексатор Excel.Range.Cells [,] возвращает все ячейки из первой области диапазона.Но обратите внимание, что Excel использует индексирование по основанию 1 (а не по основанию 0).Таким образом, чтобы получить доступ к верхней левой ячейке диапазона, вы можете использовать:
Excel.Range topLeftCell = (Excel.Range)targetRange.Cells[1,1];
Обратите внимание, что вы должны привести к Excel.Range выше, потому что индексатор Excel.Range.Cells [,] возвращаетобъект Excel.Range, приведенный как System.Object.
Также следует помнить, что свойство Excel.Range.Value будет возвращать атомарное значение, например double, string, boolean и т. д., когда диапазон состоит изотдельная клетка.Однако он вернет двумерный массив base 1, если первая область диапазона состоит из более чем одной ячейки.Например:
if (targetRange.Count = 1)
{
object myValue = targetRange.get_Value(Type.Missing);
MessageBox.Show(myValue.ToString());
}
else
{
object[,] myArray = targetRange.get_Value(Type.Missing);
for(int row = 1; row <= myValue.GetLength(0); row++)
{
for(int column = 1; column <= myValue.GetLength(1); column++)
{
MessageBox.Show(myArray[row, column].ToString());
}
}
}
Надеюсь, это поможет!
Майк