|
2010/09/07(Tue) 13:50:23 編集(投稿者) 2010/09/07(Tue) 13:50:18 編集(投稿者) ■No53218 (shu さん) に返信 > 2010/09/07(Tue) 12:30:41 編集(投稿者) > 返信ありがとうございます。
>Excel参照設定しないで使いたいってことですか?目的がよくわからなのでそう解釈します。 既存ソースでは、object型で宣言していましたので、「Excel.xxx型を使わない方法」を知りたかったんです。 説明不足ですみません。途中まで、他のサイトを引用して作成したんですが、画像貼り付けの部分がわからなかったので 投稿しました。
private void ExcelBtn_Click(object sender, EventArgs e) { object xlsApp = null; object xlsBooks = null; object xlsBook = null; object xlsSheets = null; object xlsSheet = null; object xlsRange = null; object xlsShapes = null; object xlsShape = null;
// Excelファイルのパス string xlsPath = @"xxx\uuu.xls";
// Excelのクラスのタイプとインスタンスを取得する Type objClassType;
objClassType = Type.GetTypeFromProgID("Excel.Application"); xlsApp = Activator.CreateInstance(objClassType); // xlsApp = CreateObject("Excel.Application");
//ワークブックコレクションオブジェクト xlsBooks = xlsApp.GetType().InvokeMember("Workbooks", BindingFlags.GetProperty, null, xlsApp, null);
//Excelファイルのオープン xlsBook = xlsBooks.GetType().InvokeMember("Open", BindingFlags.InvokeMethod, null,xlsBooks, new object[] { xlsPath , Type.Missing , Type.Missing , Type.Missing , Type.Missing , Type.Missing , Type.Missing , Type.Missing , Type.Missing , Type.Missing , Type.Missing , Type.Missing , Type.Missing});
xlsSheets = xlsBook.GetType().InvokeMember("WorkSheets", BindingFlags.GetProperty, null, xlsBook, null); xlsSheet = xlsSheets.GetType().InvokeMember("Item", BindingFlags.GetProperty, null, xlsSheets, new object[] { 1 }); xlsRange = xlsSheet.GetType().InvokeMember("Range", BindingFlags.GetProperty, null, xlsSheet, new object[] { "A1" }); string a1 = (string)xlsRange.GetType().InvokeMember("Value", BindingFlags.GetProperty, null, xlsRange, null); MessageBox.Show(xlsShapes.ToString());
xlsRange = xlsSheet.GetType().InvokeMember("Range", BindingFlags.GetProperty, null, xlsSheet, new object[] { "B1" }); string b1 = (string)xlsRange.GetType().InvokeMember("Value", BindingFlags.GetProperty, null, xlsRange, null); MessageBox.Show(b1); }
|