【C#】【Excel】Excelファイルを扱う ~ 入門編 ~

■ 準備

ソリューションエクスプローラの「参照設定」からExcelを追加する必要がある。
http://hwada.hatenablog.com/entry/20110530/1306719910
では、『「COM」タブのMicrosoft Excel 14.0 Object Library』ではなく
『「.NET」タブのMicrosoft.Office.Interop.Excelを追加』とある

※理由は、『「COM」タブのMicrosoft Excel 14.0 Object Library』だと
 Excelのバージョン依存があるらしい。

■ サンプル

using System.Runtime.InteropServices;
using Microsoft.Office.Interop.Excel;
using Excel = Microsoft.Office.Interop.Excel;

private void button1_Click(object sender, EventArgs e)
{
    var excel = new Excel.Application();
    if (excel == null)
    {
        MessageBox.Show("Excelないよ");
        return;
    }

    Workbook workbook = null;
    Worksheet worksheet = null;
    try
    {
        workbook = excel.Workbooks.Open(
          @"C:\sample.xls",  // オープンする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
        if (workbook == null || workbook.Sheets.Count <= 0)
        {
            MessageBox.Show("Sheetがない!?");
            return;
        }
        worksheet = (Worksheet)workbook.Sheets[1];

        // 設定方法1:セル指定
        worksheet.Cells[1, 1] = "Sample1! [A,1]";

        // 設定方法2:範囲指定
        var rangeA2 = worksheet.get_Range("A2", Missing.Value);
        rangeA2.Value2 = "Sample2! [A, 2]";

        // 保存(http://msdn.microsoft.com/ja-jp/library/h1e33e36(v=vs.80).aspx)
        foreach (Excel.Workbook wkb in excel.Workbooks) 
        {
            wkb.Save();
        }
    }
    catch
    {
        MessageBox.Show("何かでエラー!?");
    }
    finally
    {
        // 開放処理
        // [Worksheet] -> [Worksheets] -> [Workbook] -> [Workbooks] -> [Excel Application]
        // の順に開放すること

        if (worksheet != null)
        {
            Marshal.ReleaseComObject(worksheet);
        }
        if (workbook != null)
        {
            workbook.Close(true, Type.Missing, Type.Missing);
            Marshal.ReleaseComObject(workbook);
        }
        if (excel != null)
        {
            excel.Quit();
            Marshal.ReleaseComObject(excel);
        }
    }
}


関連記事

Excel

Excel を PDF化する
https://blogs.yahoo.co.jp/dk521123/30581096.html
Excel を出力する際の注意事項
https://blogs.yahoo.co.jp/dk521123/29462017.html

ASP.NET MVC

ASP.NET MVC】【VBExcel をダウンロードする [1] ~ NetOffice編 ~
https://blogs.yahoo.co.jp/dk521123/36015198.html