1

2 次元のオブジェクト配列を取得したので、それを読みたいと思います。プログラムは、常に IndexOutOfRange 例外をスローします。

コードは次のとおりです。

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

一体何が起こっているのですか?! 何か案は?

4

1 に答える 1

0

Excel は、ディメンションの開始インデックスとして 1 を使用します。一般に、不明な配列の最初の要素のインデックスを検索する場合:

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

そしてGetUpperBound、最後のインデックスを知るために同じことを行います。

詳細はこちら

于 2013-09-03T13:31:29.503 に答える