[VC2005] Excelを表示する方法
◆概要
この資料は、Microsoft(R) Visual C#で Excelを表示する方法について記述しています。
C#でExcelを表示するには、次のような手順を踏む必要があります。
◆Excellを起動し、workbookを追加する手順- [プロジェクト]-[参照の追加]で表示される、「参照の追加」ダイアログボックスで、[COM]タブを選び、Microsoft Excel xx.x Object Library(Microsoft Excel 2010の場合はxx.xの部分は14.0になります)を選択し、[選択]ボタンを押して「OK」ボタンを押します。
これにより、ソリューションエクスプローラーの参照設定にMicrosoft.Office.CoreとMicrosoft.Office.Interop.Excelが追加されます。
- usingディレクティブの一覧の末尾に次の1行を追加します。
using Excel = Microsoft.Office.Interop.Excel;
- フォームのボタンを配置し、次のとおりコードをフォームモジュールに記述します。
private void button1_Click(object sender, EventArgs e) { Excel.Application oXls; // Excelオブジェクト Excel.Workbook oWBook; // Workbookオブジェクト oXls = new Excel.Application(); // 表示する oXls.Visible = true; // ワークシートを追加する oWBook = oXls.Workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet); }
◆Sample2
次の例は、既存のExcelファイルを開き、指定されたシートのセルA1の値を出力ウィンドウに出力します。この例を実行するには、フォームにテキストボックスを2つ配置し、名前を「txbFileName」「txbSheetName」にしてください。
using Excel = Microsoft.Office.Interop.Excel;//追加 private void button1_Click(object sender, EventArgs e) { string excelName = this.txbFileName.Text; Excel.Application oXls; // Excelオブジェクト Excel.Workbook oWBook; // Workbookオブジェクト oXls = new Excel.Application(); oXls.Visible = true; //確認のためExcelのウィンドウを表示する // oXls.Visible = false; // Excelのウィンドウを表示しない // Excelファイルをオープンする oWBook = (Excel.Workbook)(oXls.Workbooks.Open( excelName, // オープンするExcelファイル名 Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing )); // ワークシートの選択 // 与えられたワークシート名から、Worksheetオブジェクトを得る string sheetName = this.txbSheetName.Text; Excel.Worksheet oSheet; // worksheetオブジェクト oSheet = (Excel.Worksheet)oWBook.Sheets[ getSheetIndex(sheetName, oWBook.Sheets)]; // string sCellVal; Excel.Range rng; // Rangeオブジェクト rng = (Excel.Range)oSheet.Cells[1, 1]; sCellVal = rng.Text.ToString(); //A1セルの内容 // 全ての処理が終了したら、Workbookオブジェクトをクローズし // Excelを終了しておく oWBook.Close(Type.Missing, Type.Missing, Type.Missing); oXls.Quit(); System.Diagnostics.Debug.Print(sCellVal); } // 指定されたワークシート名のインデックスを返すメソッド private int getSheetIndex(string sheetName, Excel.Sheets shs) { int i = 0; foreach(Excel.Worksheet sh in shs) { if(sheetName==sh.Name) { return i+1; } i+=1; } return 0; }
txbFileNameに既存のエクセルファイル名をフルパスで入力し、txbSheetNameには、シート名を入力してから、ボタンを押すと出力ウィンドウに指定したシートのセルA1の内容が出力されます。
◆Sample3
C# 4の場合、ファイル名を指定することでMissing引数を省略し、簡潔に記述することができます。事前に[プロジェクト]-[参照の追加]の[Com]タブでMicorsoft Excel xx.x Object Libraryを追加しておく必要があります。xx.xの部分は、Excel2010の場合、14.0です。
using Microsoft.Office.Interop.Excel; private void button1_Click(object sender, EventArgs e) { var excelApp = new Microsoft.Office.Interop.Excel.Application(); excelApp.Visible = true; excelApp.Workbooks.Open( @"C:\test.xls", CorruptLoad: XlCorruptLoad.xlRepairFile); }
◆Sample4
C# 4のコンソールアプリケーションの場合
using Microsoft.Office.Interop.Excel; //プロジェクト]-[参照の追加]の[Com]タブでMicorsoft Excel xx.x Object Libraryを追加しておく namespace ConsoleApplication3 { class Program { static void Main(string[] args) { var excelApp = new Application(); excelApp.Visible = true; excelApp.Workbooks.Open( @"C:\test.xls", CorruptLoad: XlCorruptLoad.xlRepairFile); } } }
▼ページトップへ