SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ComponentZine(ComponentOne)

Excelブックを読み書きする.NET アプリケーションを作る-その2

入力データをExcel形式で保存する.NETアプリケーションを作る

  • このエントリーをはてなブックマークに追加

XLStyleクラスのインスタンスの作成

 今回は、セルのスタイルを設定しています。XLStyleというオブジェクトを作成し、このオブジェクトのプロパティを使って文字色やセルの塗りつぶし色、罫線の設定を行い、XLStyleオブジェクトをセルに適用するという方法です。セルのスタイルはセル単位で設定し、列幅の設定は列単位で行うようにします。これらの処理は、データ転送のClickイベントハンドラの中で行い、データの書き出しを行うコードの前に記述します。

データを取り出す処理

 作成するスタイルは2つで、各列ごとに文字色と背景色を変えます。

 まず、XLStyleクラスのコンストラクタを使って、インスタンスを作成します。引数は、スタイルを設定するC1XLBookオブジェクトです。そして、XLStyleクラスのプロパティを使用してセルのスタイルを設定します。

 罫線を設定する場合は、SetBorderStyleメソッドを使用すると、一括して罫線を設定できます。引数には、罫線の線種を表すXLLineStyleEnum列挙体のメンバを指定します。罫線の色はSetBorderColorメソッドで設定します。引数は罫線の色を表すColorクラスのメンバです。

 ここでは、セルの塗りつぶしと文字色が違う2種類のXLStyleオブジェクトを作成します。

Visual Basic
'セルのスタイルと罫線の設定
Dim style1 As New XLStyle(C1XLBook1)
style1.ForeColor = Color.Yellow
style1.BackColor = Color.Blue
style1.SetBorderStyle(XLLineStyleEnum.Thin)
style1.SetBorderColor(Color.Cyan)

Dim style2 As New XLStyle(C1XLBook1)
style2.ForeColor = Color.Black
style2.BackColor = Color.LightSalmon
style2.SetBorderStyle(XLLineStyleEnum.Thin)
style2.SetBorderColor(Color.Cyan)
C#
//セルのスタイルと罫線の設定
XLStyle style1 = new XLStyle(c1XLBook1);
style1.ForeColor = Color.Yellow;
style1.BackColor = Color.Blue;
style1.SetBorderStyle(XLLineStyleEnum.Thin);
style1.SetBorderColor(Color.Cyan);

XLStyle style2 = new XLStyle(c1XLBook1);
style2.ForeColor = Color.Black;
style2.BackColor = Color.LightSalmon;
style2.SetBorderStyle(XLLineStyleEnum.Thin);
style2.SetBorderColor(Color.Cyan);

セルのサイズの調節とスタイルの設定

 セルの列幅は、個別のセルには設定できず列単位の設定になります。XLSheetクラスのColumnsプロパティを使うと、列全体をオブジェクトとして指定でき、Widthプロパティで列幅を設定できます(単位はTwips(1/20 point)なので、数字が大きくなっています)。

 セルの高さは、行単位で設定します。同じくXLSheetクラスのRowsプロパティを使うと、行全体をオブジェクトとして指定でき、Heightプロパティで高さを設定できます(同じく単位はTwips(1/20 point))。

 また、作成したXLStyleオブジェクトは各セル単位で指定できます。これは、セルを行列番号で指定し、Styleプロパティに作成したXLStyleオブジェクトを設定するだけで可能です。ここでは1列目と2列目のセルに、それぞれのXLStyleオブジェクトを設定しています。

Visual Basic
sheet1.Columns(0).Width = 1300
Dim i As Integer 
For i = 1 To 6
    sheet1.Rows(i).Height = 400
    sheet1(i, 0).Style = style1
    sheet1(i, 1).Style = style2
Next
C#
sheet1.Columns[0].Width = 1300;
for(int i=1;i<=6;i++){
    sheet1.Rows[i].Height = 400;
    sheet1[i, 0].Style = style1;
    sheet1[i, 1].Style = style2;
}
書式設定をしていないセル
書式設定をしていないセル
書式設定後のセル
書式設定後のセル

Clickイベントハンドラのコード全文

Visual Basic
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim wb As New C1XLBook()
        Dim sheet1 As XLSheet = wb.Sheets(0)

        'セルのスタイルと罫線の設定
        Dim style1 As New XLStyle(C1XLBook1)
        style1.ForeColor = Color.Yellow
        style1.BackColor = Color.Blue
        style1.SetBorderStyle(XLLineStyleEnum.Thin)
        style1.SetBorderColor(Color.Cyan)


        Dim style2 As New XLStyle(C1XLBook1)
        style2.ForeColor = Color.Black
        style2.BackColor = Color.LightSalmon
        style2.SetBorderStyle(XLLineStyleEnum.Thin)
        style2.SetBorderColor(Color.Cyan)

        sheet1.Columns(0).Width = 1300
        Dim i As Integer
        For i = 1 To 6
            sheet1.Rows(i).Height = 400
            sheet1(i, 0).Style = style1
            sheet1(i, 1).Style = style2
        Next

        'データの書き出し
        sheet1(0, 0).Value = "品名"
        sheet1(0, 1).Value = "数量"

        sheet1(1, 0).Value = Label3.Text
        sheet1(2, 0).Value = Label4.Text
        sheet1(3, 0).Value = Label5.Text
        sheet1(4, 0).Value = Label6.Text
        sheet1(5, 0).Value = Label7.Text
        sheet1(6, 0).Value = Label8.Text

        sheet1(1, 1).Value = CInt(TextBox1.Text)
        sheet1(2, 1).Value = CInt(TextBox2.Text)
        sheet1(3, 1).Value = CInt(TextBox3.Text)
        sheet1(4, 1).Value = CInt(TextBox4.Text)
        sheet1(5, 1).Value = CInt(TextBox5.Text)
        sheet1(6, 1).Value = CInt(TextBox6.Text)

        'ブックの保存とExcelの起動
        wb.Save("c:\data\グリッドデータ.xls")
        System.Diagnostics.Process.Start("c:\data\グリッドデータ.xls")
    End Sub
End Class
C#
        private void button1_Click(object sender, EventArgs e)
        {
            C1XLBook wb = new C1XLBook();
            XLSheet sheet1 = wb.Sheets["Sheet1"];
            
            //セルのスタイルと罫線の設定
            XLStyle style1 = new XLStyle(c1XLBook1);
            style1.ForeColor = Color.Yellow;
            style1.BackColor = Color.Blue;
            style1.SetBorderStyle(XLLineStyleEnum.Thin);
            style1.SetBorderColor(Color.Cyan);


            XLStyle style2 = new XLStyle(c1XLBook1);
            style2.ForeColor = Color.Black;
            style2.BackColor = Color.LightSalmon;
            style2.SetBorderStyle(XLLineStyleEnum.Thin);
            style2.SetBorderColor(Color.Cyan);

            sheet1.Columns[0].Width = 1300;
            for(int i=1;i<=6;i++){
                sheet1.Rows[i].Height = 400;
                sheet1[i, 0].Style = style1;
                sheet1[i, 1].Style = style2;
            }

           //データの書き出し
            sheet1[0, 0].Value = "品名";
            sheet1[0, 1].Value = "数量";

            sheet1[1, 0].Value = label3.Text;
            sheet1[2, 0].Value = label4.Text;
            sheet1[3, 0].Value = label5.Text;
            sheet1[4, 0].Value = label6.Text;
            sheet1[5, 0].Value = label7.Text;
            sheet1[6, 0].Value = label8.Text;

            sheet1[1, 1].Value = int.Parse(textBox1.Text);
            sheet1[2, 1].Value = int.Parse(textBox2.Text);
            sheet1[3, 1].Value = int.Parse(textBox3.Text);
            sheet1[4, 1].Value = int.Parse(textBox4.Text);
            sheet1[5, 1].Value = int.Parse(textBox5.Text);
            sheet1[6, 1].Value = int.Parse(textBox6.Text);

            //ブックの保存とExcelの起動
            wb.Save("c:/data/グリッドデータ.xls");
            System.Diagnostics.Process.Start("c:/data/グリッドデータ.xls");
        }
    }
}

まとめ

 C1XLBookコンポーネントでは、ただ単にデータをExcel形式で保存できるだけでなく、セルの書式設定や罫線の作成までもプログラム側で行うことができます。

 計測プログラムや独自のデータ入力アプリケーションを作成する場合、データをファイルに保存するのはかなり手間のかかる作業です。また、データファイルを市販のアプリケーションと互換性を持たせようとすると、CSV形式など見づらいデータ形式になってしまいます。Excel形式でデータを保存できれば、Excelで読み書きできるようになるのはもちろんのこと、他のOfficeアプリケーションでAccessなどのデータベースファイルでも使えるデータファイルになります。

修正履歴

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
ComponentZine(ComponentOne)連載記事一覧

もっと読む

この記事の著者

瀬戸 遥(セト ハルカ)

8ビットコンピュータの時代からBASICを使い、C言語を独習で学びWindows 3.1のフリーソフトを作成、NiftyServeのフォーラムなどで配布。Excel VBAとVisual Basic関連の解説書を中心に現在まで40冊以上の書籍を出版。近著に、「ExcelユーザーのためのAccess再...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/3590 2009/03/02 10:18

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング