【メモ】C#でエクセルいじる(環境:Visual Studio)

C#でエクセル弄れたのでメモを残しておきます。人がわかるように書いてないです。一ヶ月後の私がこれ読んで役に立つか、とかも考えてないです。お察しください。
最初に「参照の追加」からMicrosoft Excel 15.0 Object Libraryを追加します。
Microsoft.Office.Interop.Excelがusingできるようになるのでusingします。これでExcelが弄れるようになりました。

書いたのが以下のソース。readFileName(エクセルファイル)の内容をwriteFileNameへコピーするだけです。例外処理とかは書いてないです・・・。

            //報告エクセル操作用オブジェクト
            Application xlAppR = new Application();
            Workbook xlBookR = xlAppR.Workbooks.Open(readFileName);
            Worksheet xlSheetR = xlBookR.Sheets[1];

            //更新エクセル操作用オブジェクト
            Application xlAppU = new Application();
            Workbook xlBookU = xlAppU.Workbooks.Open(writeFileName);
            Worksheet xlSheetU = xlBookU.Sheets[1];

            //報告内容を更新エクセルに書き込む
            Range xCellsR = null;
            Range xCellsU = null;

            xCellsR = xlSheetR.Cells;
            xCellsU = xlSheetU.Cells;
            int i=1;
            xCellsU[1, 1].Value = "aaa";
            
            //セルが空でない間、回る
            while (xCellsR[i, 1].Text.ToString() != String.Empty)
            {
                xCellsU[i, 2].Value = xCellsR[i, 1].Value;
                i++;
            }

            //解放をしないといけない
            xlBookR.Close(); xlBookU.Close();
            xlAppR.Quit(); xlAppU.Quit();
            Marshal.FinalReleaseComObject(xlAppR);
            Marshal.FinalReleaseComObject(xlAppU);
            xlAppR = null; xlAppU = null;

最後にオブジェクトの解放が必要です。いつまでも読み込み状態になって少し困りました。
エクセルでなくてもファイルを弄るときはだいたい必要。
上のコードだとメソッド終了後に「保存しますか?」ってダイアログが出てしまいますが、勝手に保存してくれるようにもできるみたいです。

最初のオブジェクトの用意とか最後のクローズ処理とかは共通モジュールにしたほうがいいかも。
参考サイトはいっぱいあったんですがメモり忘れました。