- - PR -
遅延バインディングでExcelに配列でデータを渡す方法
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-11-18 20:41
お世話になります。初心者ですみません。
事前バインディングでExcelシートに2次元配列でデータを 直接セットし、表示させていましたが、わけあって 遅延バインディングで同様の処理を行う事になりました。 セル毎にデータをセットする方法はわかったのですが、 配列で一括で渡す方法がわかりませんでした。 ご存知の方がおられましたら、ご教授いただけると大変助かります。 よろしくお願いいたします。 //事前バインディングの場合 これはうまくいくのですが------------------------ protected override void WriteWorkSheet(string[,] strData, Excel.Worksheet sheet) (中略) string strCell1 = "B5"; string strCell2 = "E10"; sheet.get_Range(strCell1,strCell2).value2 = strData; //遅延バインディングの場合 こちらがわかりません(最後のInvokeMemberの部分)-- // Excelのクラスのタイプとインスタンスを取得する Type typClassType = Type.GetTypeFromProgID("Excel.Application"); object objExcelApp = Activator.CreateInstance(typClassType); //workbooks のコレクションを取得する object objExcelBooks = objExcelApp.GetType().InvokeMember( "Workbooks", BindingFlags.GetProperty, null, objExcelApp, null ); //新たにworkbookを作成する object objExcelBook = objExcelBooks.GetType().InvokeMember( "Add", BindingFlags.InvokeMethod, null, objExcelBooks, null ); //worksheets のコレクションを作成する object objExcelSheets = objExcelBook.GetType().InvokeMember( "Worksheets", BindingFlags.GetProperty, null, objExcelBook, null ); //最初の worksheet を取得する object[] args = new Object[1]; args[0] = 1; object objExcelSheet = objExcelSheets.GetType().InvokeMember( "Item", BindingFlags.GetProperty, null, objExcelSheets, args ); //セットするRangeを設定する args = new Object[2]; args[0] = "A1"; args[1] = "B2"; object objExcelRange = objExcelSheet.GetType().InvokeMember( "Range", BindingFlags.GetProperty, null, objExcelSheet, args ); //データをシートにセットする ここを2次元配列のデータでセットしたい args = new Object[1]; args[0] = "Hello, World!"; objExcelRange.GetType().InvokeMember( "Value", BindingFlags.SetProperty, null, objExcelRange, args ); |
1