ExcelHelperクラス

ExcelHelperクラス使用例

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

//Excel 2002の場合、COMコンポーネントへの参照へMicrosoft Excel 10.0 Object Libraryを追加
using Microsoft.Office.Core;

//Excel 2007の場合、COMコンポーネントへの参照へMicrosoft Excel 12.0 Object Libraryを追加
//Excel 2003の場合、COMコンポーネントへの参照へMicrosoft Excel 11.0 Object Libraryを追加
//using Excel = Microsoft.Office.Interop.Excel;

namespace ExcelHelper
{
    class Program
    {
        static void Main(string[] args)
        {
            ExcelHelper eh = new ExcelHelper(@"c:\test.xls", "Sheet1");
            eh.Operate = new Action<Excel.Worksheet>(OperateExcel);
            eh.Execute();
            Console.WriteLine("end ...");
        }

        static void OperateExcel(Excel.Worksheet worksheet) 
        {
            Excel.Range range = (Excel.Range)worksheet.Cells[1, 1];
            string cell = range.Text.ToString();
            Console.WriteLine(cell);
        }
    }
}

ExcelHelperクラス

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

//Excel 2002の場合、COMコンポーネントへの参照へMicrosoft Excel 10.0 Object Libraryを追加
using Microsoft.Office.Core;

//Excel 2007の場合、COMコンポーネントへの参照へMicrosoft Excel 12.0 Object Libraryを追加
//Excel 2003の場合、COMコンポーネントへの参照へMicrosoft Excel 11.0 Object Libraryを追加
//using Excel = Microsoft.Office.Interop.Excel;

namespace ExcelHelper
{
    /// <summary>
    /// エクセルヘルパー
    /// </summary>
    /// <remarks>EXCELのファイル名・シート名を指定、操作を行います</remarks>
    public class ExcelHelper
    {
        #region 変数・プロパティ

        /// <summary>
        /// Excelオブジェクト
        /// </summary>
        Excel.Application excelObject = null;
        
        /// <summary>
        /// Excel.Workbook オブジェクト
        /// </summary>
        Excel.Workbook workBook = null;

        /// <summary>
        /// Excel.Worksheet オブジェクト
        /// </summary>
        Excel.Worksheet workSheet = null;

        /// <summary>
        /// ファイル名
        /// </summary>
        string fileName = string.Empty;

        /// <summary>
        /// シート名
        /// </summary>
        string sheetName = string.Empty;

        /// <summary>
        /// 操作デリゲート
        /// </summary>
        public Action<Excel.Worksheet> Operate = null;

        #endregion

        #region コンストラクタ
        
        /// <summary>
        /// コンストラクタ
        /// </summary>
        private ExcelHelper() 
        {
        }

        /// <summary>
        /// コンストラクタ
        /// </summary>
        /// <param name="fileName">ファイ名</param>
        /// <param name="sheetName">シート名</param>
        public  ExcelHelper(string fileName, string sheetName)
        {
            this.fileName = fileName;
            this.sheetName = sheetName;
        }

        #endregion

        #region 指定されたワークシート名のインデックスを返すメソッド
        /// <summary>
        /// 指定されたワークシート名のインデックスを返すメソッド
        /// </summary>
        /// <param name="sheetName"></param>
        /// <param name="shs"></param>
        /// <returns></returns>
        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;
        } 
        #endregion

        #region オープン
        /// <summary>
        /// オープン
        /// </summary>
        private void Open()
        {
            this.excelObject = new Excel.Application();
            this.excelObject.Visible = false;

            // Excelファイルをオープンする
            this.workBook = (Excel.Workbook)(this.excelObject.Workbooks.Open(
              this.fileName,    // オープンするExcelファイル名
              Type.Missing,     // (省略可能)UpdateLinks (0 / 1 / 2 / 3)
              Type.Missing,     // (省略可能)ReadOnly (True / False )
              Type.Missing,     // (省略可能)Format 1:タブ / 2:カンマ (,) / 3:スペース / 4:セミコロン (;) / 5:なし / 6:引数 Delimiterで指定された文字
              Type.Missing,     // (省略可能)Password
              Type.Missing,     // (省略可能)WriteResPassword
              Type.Missing,     // (省略可能)IgnoreReadOnlyRecommended
              Type.Missing,     // (省略可能)Origin
              Type.Missing,     // (省略可能)Delimiter
              Type.Missing,     // (省略可能)Editable
              Type.Missing,     // (省略可能)Notify
              Type.Missing,     // (省略可能)Converter
              Type.Missing,     // (省略可能)AddToMru
              Type.Missing,     // (省略可能)Local
              Type.Missing      // (省略可能)CorruptLoad
            ));

            this.workSheet = (Excel.Worksheet)this.workBook.Sheets[this.GetSheetIndex(this.sheetName, this.workBook.Sheets)];
        } 
        #endregion

        #region クローズ
        /// <summary>
        /// クローズ
        /// </summary>
        private void Close()
        {
            this.workBook.Close(Type.Missing, Type.Missing, Type.Missing);
            this.excelObject.Quit();
        } 
        #endregion

        #region 実行
        /// <summary>
        /// 実行
        /// </summary>
        public void Execute()
        {
            try
            {
                this.Open();
                this.Operate(this.workSheet);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
            finally 
            {
                this.Close();
            }    
        } 
        #endregion
    } 
}