▼環境
OS:Windows 7
Visual Studio:2010
Excel:2010
▼出力するファイルの作成
出力するExcelは,どこに作っても構いません.今回は「C:\c_sharp」フォルダに「test.xlsx」という名前のExcelファイルを作ることにします.
▼Visual Studio 2010の設定
Visual Studioを開き,「ファイル」→「新しいプロジェクト」をクリックします.テンプレートは,コンソール アプリケーションを選択し,適当な名前にします.
ファイルができあがったら,「プロジェクト」→「参照の追加」→「COM」の中の「Microsoft Excel 14.0 Object Library」を選択し,「OK」をクリックします.
▼プログラム
using System; using Microsoft.Office.Interop.Excel; namespace ConsoleApplication1 { class Program { static void Main() { //Excelのパス string fileName = @"C:\c_sharp\test.xlsx"; Application xlApp = new Application(); //Excelが開かないようにする xlApp.Visible = false; //指定したパスのExcelを起動 Workbook wb = xlApp.Workbooks.Open(Filename: fileName); try { //Sheetを指定 ((Worksheet)wb.Sheets[1]).Select(); } catch(Exception ex) { //Sheetがなかった場合のエラー処理 //Appを閉じる wb.Close(false); xlApp.Quit(); //Errorメッセージ Console.WriteLine("指定したSheetは存在しません."); Console.ReadLine(); //実行を終了 System.Environment.Exit(0); } //変数宣言 Range CellRange; for (int i = 1; i <= 5; i++) { //書き込む場所を指定 CellRange = xlApp.Cells[i, 1] as Range; //書き込む内容 CellRange.Value2 = "繰り返し" + i + "回目"; } //Appを閉じる wb.Close(true); xlApp.Quit(); } } }
上記のプログラムを実行すると,下記のような文字がExcelに出力されるはずです(コピーした場合は,Excelのパスに注意してください).それと,プログラムを実行する時は,Excelを閉じた状態で行いましょう.
▼プログラムの説明
下記の23行目はSheet番号を指定しています.今回は,Sheet1に書き込むので,[1]と指定しています.
なぜ,わざわざtryを使っているかというと,このtryがなくて,存在しないSheetを選択し,実行してしまうとtest.xlsxが開けなくなってしまうからです(再起動すると開けます).
try { //Sheetを指定 ((Worksheet)wb.Sheets[1]).Select(); } catch(Exception ex) { //Sheetがなかった場合のエラー処理 //Appを閉じる wb.Close(false); xlApp.Quit(); //Errorメッセージ Console.WriteLine("指定したSheetは存在しません."); Console.ReadLine(); //実行を終了 System.Environment.Exit(0); }
下記の42行目で変数を宣言し,47行目で書き込むCellを指定します.Cells[行, 列]のように指定します.Excelの列は「A, B, C,…」となっていますが,Cellsは数字で列を指定します.そうしたら,50行目で,指定したセルに書き込む内容をCellRange.Value2に入れます.
//変数宣言 Range CellRange; for (int i = 1; i <= 5; i++) { //書き込む場所を指定 CellRange = xlApp.Cells[i, 1] as Range; //書き込む内容 CellRange.Value2 = "繰り返し" + i + "回目"; }
▼補足1
上記のプログラムは,Sheetを[1]のようにページ数で指定していますが,下記のようにSheetの名前で指定することも可能です.
((Worksheet)wb.Sheets["Sheet1"]).Select();
▼補足2
//Excelファイルの変更を更新する場合 wb.Close(true); //Excelファイルの変更を更新しない場合 wb.Close(false);