SHOEISHA iD

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

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

ComponentZine(ComponentOne)

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

PowerTools XLS for .NETコンポーネントでMicrosoft Excelファイルの書き込み機能を組み込む

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

GUIの作成

 入力画面は、すべてVisual Studioの標準コントロールの、リストボックス、ラベル、テキストボックス、ボタンで組み立てています。

 C1XLBookコンポーネントは、ユーザーとのインターフェースは持たず、プロセスだけを提供するコンポーネントなので、フォームの外に配置されます。

GUIデザイン
GUIデザイン

C1XLBookコンポーネントについて

 C1XLBookコンポーネントは、Excelのブック形式のファイルを読み書きできるコンポーネントです。ファイルの読み書きには、Excel 8.0(Excel97)以降で採用されているBIFF8形式を利用しています。

 ファイルの書き出しでは、Excelで開くことができる、ファイルの拡張子が「xls」のファイルを作成できます。また、ファイルの読み込みでは、複数のワークシートで構成されるxlsファイルにある、すべてのセルの内容と書式をそのままロードできるようになっています。ただし、セルの罫線やセルに設定された数式を読み込んだり、グラフなどの画像ファイルを読み書きすることができません。

 C1XLBookコンポーネント(C1XLBookオブジェクト)は、1つのオブジェクトで1つのブックを表します。ブックには、複数のシート(XLSheetオブジェクト)で構成され、各シート内にはセル(XLCellオブジェクト)があります。

 また、セルにはValue プロパティとStyleプロパティがあり、Valueプロパティはセルの値を格納し、StyleプロパティはXLStyleオブジェクトを使ってセルの書式を設定します。ブック形式での保存や読み込みは、C1XLBookオブジェクトのメソッドを使用して行います。

列見出しの作成

 では、フォームに入力されたデータをExcelのブック形式(xlsファイル)で書き出す処理を作成します。

表の内容

 入力データは、「品名」「数量」「単価」「合計」で、合計以外はユーザーからの入力を受け付け、合計は計算で導き出すようにします。データは下図のような表にします。見てわかるように、ブックには1枚のシートが追加され、行方向に入力データが追加されていきます。

 列見出しは、フォントのスタイルを太字にし、文字色を青色にします。そして、A列から順番に「品名」「数量」「単価」「合計」を入力します。

列見出しの入力

 フォームのLoadイベントハンドラで、列見出しを作成する処理を実行します。

 まず、ブックにワークシートを1枚追加します。これは、C1XLBookオブジェクトのSheetsプロパティを使ってXLSheetsコレクション内のXLSheetオブジェクトを1つ、オブジェクト変数に格納します。

 このワークシートは、C1XLBookを新規作成したときに自動的に作成されます。

Visual Basic
Imports C1.C1Excel

Public Class Form1
    Dim sheet As XLSheet
    Dim rowpos As Integer = 0

    Private Sub Form1_Load(ByVal sender As System.Object, _
                    ByVal e As System.EventArgs) Handles MyBase.Load
        sheet = Me.C1XLBook1.Sheets(0)
C#
using C1.C1Excel;

namespace xlsapp_cs
{
    public partial class Form1 : Form
    {
        XLSheet sheet;
        int rowpos = 0;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            sheet = c1XLBook1.Sheets[0];

 次に、セルに列見出しの文字列を代入します。セルを操作する場合は、XlSheetオブジェクトのインデクサ(引数のようなもの)で、セルの行列番号を指定すると、その位置のXLCellオブジェクトを返してきます。番号は、ワークシートの先頭行(1行目)が0、先頭列(A列)が0から始まります。

 最初は、セルA1と同じ位置のXLCellオブジェクトへの参照を作成し、その値に「品名」という文字を代入します。

Visual Basic
Dim cell As XLCell = sheet(rowpos, 0)
cell.Value = "品名"
C#
XLCell cell = sheet[rowpos, 0];
cell.Value = "品名";

 同じように、lSheetオブジェクトのインデクサの列番号を変えて、残りのセルに列見出しの文字列を代入します。

Visual Basic
cell = sheet(rowpos, 1)
cell.Value = "数量"

cell = sheet(rowpos, 2)
cell.Value = "単価"

cell = sheet(rowpos, 3)
cell.Value = "合計"
C#
cell = sheet[rowpos, 1];
cell.Value = "数量";

cell = sheet[rowpos, 2];
cell.Value = "単価";

cell = sheet[rowpos, 3];
cell.Value = "合計";

セルの書式設定

 列見出しを代入したら、この文字の書式を変更します。といっても、使い方は簡単です。

 まず、XLStyleクラスのインスタンスを作成します。そして、Fontクラスのインスタンスを作成し、フォントの属性を設定します。また、文字色はXLStyleクラスのForeColorプロパティの値を変えるだけです。ここでは、フォントを「Arial」のサイズ「10」で「Bold」になるようにし、文字色を「Blue」に設定します。

Visual Basic
Dim styleBlue As New XLStyle(Me.C1XLBook1)

styleBlue.Font = New Font("Arial", 10, FontStyle.Bold)
styleBlue.ForeColor = Color.Blue
C#
XLStyle styleBlue = new XLStyle(c1XLBook1);

styleBlue.Font = new Font("Arial", 10, FontStyle.Bold);
styleBlue.ForeColor = Color.Blue;

 XLStyleオブジェクトが作成できたら、XLCellオブジェクトのStylleプロパティにこのXLStyleオブジェクトを設定するだけです。

 なお、変数「rowpos」は、データを入力する行番号を指定する変数です。

Visual Basic
Dim i As Integer
For i = 0 To 3
    sheet(0, i).Style = styleBlue
Next

rowpos += 1
C#
int i ;
for(i=0;i <=3; i++){
    sheet[0, i].Style = styleBlue;
}

rowpos += 1;

次のページ
入力データの転送

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

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

もっと読む

この記事の著者

瀬戸 遥(セト ハルカ)

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

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

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

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/1924 2008/06/24 15:07

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング