C# Excelに出力する方法
Category:C#    投稿日:2012年12月06日
このエントリーをはてなブックマークに追加
▼環境

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);
このエントリーをはてなブックマークに追加

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です