Excelで何かしようと思ったらVBAを使うのが普通なのでしょうが、VBはあまり好きじゃないのです。POIを使えばJavaやScala等でもファイルを吐けますし、Win32OLEを使えばRubyや、あるいはPerlなどでも操作できますが、インテリセンスが使えるのでC#がお手軽じゃないかと思います。
というわけでC#でExcelを操作する手順のとっかかりだけ、メモ。Visual Studio 2008を使います。
参照の追加
適当なプロジェクトを作成して、ソリューションエクスプローラの「参照設定」からExcelを追加します。「.NET」タブの中にMicrosoft.Office.Interop.Excelがあるので、これを選んでOKを押します。
Excelがインストールされている環境では「COM」タブの方にもMicrosoft Excel 14.0 Object Libraryなんてのがありますが、こちらは使用しない方が良いでしょう。こちらは任意のバージョンのExcelが入っている環境でしかビルドできず、ビルドしたアセンブリの実行すらできなくなってしまいます。
使ってみる
Excel関連のクラスはMicrosoft.Office.Interop.Excel名前空間内にあります。usingしておくと楽です。
// Excelのインスタンスを生成して表示してみる var excel = new Microsoft.Office.Interop.Excel.Application(); excel.Visible = true; // ブックを作ってセルに何か入力してみる Workbook book = excel.Workbooks.Add(Type.Missing); Worksheet sheet = (Worksheet)book.Sheets[1]; sheet.Cells[1, 1] = "Hello Excel!";
どんなクラスがあるかなどはMSDNに載っています。
Microsoft.Office.Interop.Excel 名前空間
少し不便なのはWorkbooks.Sheetsプロパティからシートを取り出すときの型がobjectなのでキャストしないといけない、みたいなのがちらほらあるところですが、他の言語でインテリセンス書くよりは楽かなあと思います。あとは配列は例によって(?)1始まりなので少し注意しないと例外がぽんぽん出てしまいます。
グラフを描きたいとかシートの色を変えたいとか、やりたいことがあるときにどう実現すればいいかは、VBAをキーワードに入れて検索すると見つかりやすいかもしれません。VBAでできることは、大抵(多分)C#でもできます。