2013-09-03 4 views
1

У меня есть 2-мерный массив объектов, и я хочу его прочитать. Программа всегда генерирует исключение IndexOutOfRange.C# двумерный массив доступа броски IndexOutOfRangeException

Вот код:

Excel.Range range = activeWorksheet.UsedRange; 
MessageBox.Show(range.Value2.GetType().toString()); // output: System.Object[,] 
object[,] values = (object[,])range.Value2; 
MessageBox.Show("l0="+values.GetLength(0)); // output: 1483 
MessageBox.Show("l1"+values.GetLength(1)); // output: 221 
MessageBox.Show(values.GetValue(0, 0).ToString()); // -> throws IndexOutOfRangeException 

Какого черта там происходит ?! Есть идеи?

+7

Просто попробуйте. Начните с индекса 1,1 – Steve

+2

Хороший ol 'base-1 Excel :-) –

+0

вот и все. О, мой бог. Теперь я помню, почему я никогда не хотел разрабатывать с помощью инструментов Microsoft – appsthatmatter

ответ

0

Excel использует 1 как начальный индекс для своих измерений. В общем, если вы хотите найти индекс первого элемента массива неизвестного:

int startXIndex = values.GetLowerBound(0); // 0 based dimension 
int startYIndex = values.GetLowerBound(1); 

И сделать то же самое с GetUpperBound знать последний индекс.

Подробнее here.

Смежные вопросы