[VC2005] Excelを表示する方法

◆概要

この資料は、Microsoft(R) Visual C#で Excelを表示する方法について記述しています。

C#でExcelを表示するには、次のような手順を踏む必要があります。

◆Excellを起動し、workbookを追加する手順

  1. [プロジェクト]-[参照の追加]で表示される、「参照の追加」ダイアログボックスで、[COM]タブを選び、Microsoft Excel xx.x Object Library(Microsoft Excel 2010の場合はxx.xの部分は14.0になります)を選択し、[選択]ボタンを押して「OK」ボタンを押します。
    これにより、ソリューションエクスプローラーの参照設定にMicrosoft.Office.CoreとMicrosoft.Office.Interop.Excelが追加されます。
     
  2. usingディレクティブの一覧の末尾に次の1行を追加します。
    using Excel = Microsoft.Office.Interop.Excel;
  3. フォームのボタンを配置し、次のとおりコードをフォームモジュールに記述します。
        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);
        }
    }
}


▼ページトップへ