SHOEISHA iD

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

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

ComponentZine(ComponentOne)

テキストデータから印刷ドキュメントを作成する.NETアプリケーションに表機能を追加する

続・ComponentOne StudioのReports for Windows Formsを使ったWindowsアプリケーションの作成

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

テーブルの作成

 今度は新しいページを追加し、テーブル機能を使ってテキストデータを表にします。

 元データは「sample_data.txt」というファイルに格納してあり、「No」「メーカー名」「ギター名」という3種類のデータを1行ずつ改行して保存しています。データは、列見出しを含め全部で11行分あります。このデータを1行ずつ読み込み、3列11行の表を作成してそこに挿入します。

テキストファイルの元データ
テキストファイルの元データ
作成した表
作成した表

3列11行のテーブルの作成

 最初に空のセルを持ったテーブルを作成し、そこにテキストデータを読み込んでセルに挿入していきます。

 テーブルの作成は、RenderTableクラスのコンストラクタを実行し、RenderTextオブジェクトを作成して、テーブルのセルに追加します。この処理を3列11行分繰り返します。

Visual Basic
 '*************** 3ページ目を追加 **************************

'ページ区切りの作成
Dim rt2 As New RenderText
rt2.Text = ""
rt2.BreakBefore = BreakEnum.Page
Me.C1PrintDocument1.Body.Children.Add(rt2)

'テーブルの作成-3列11行
Dim table1 As RenderTable = New RenderTable(Me.C1PrintDocument1)

Dim row As Integer
Dim col As Integer

For row = 0 To 10
	For col = 0 To 2
        Dim celltext As RenderText = New RenderText(Me.C1PrintDocument1)
        ' 空のセルを追加
        table1.Cells(row, col).RenderObject = celltext
    Next
Next
C#
 //*************** 3ページ目を追加 *************************

//ページ区切りの作成
RenderText rt2 =  new RenderText();
rt2.Text = "";
rt2.BreakBefore = BreakEnum.Page;
c1PrintDocument1.Body.Children.Add(rt2);

//テーブルの作成-3列11行
RenderTable table1 = new RenderTable(c1PrintDocument1);

int row, col;

for(row=0; row<=10; row++)
{
    for(col=0; col<=2; col++)
    {
        RenderText celltext = new RenderText(c1PrintDocument1);
        // 空のセルを追加します
        table1.Cells[row, col].RenderObject = celltext;
    }
}

 これでテーブルは完成ですが、このままではプログラムを実行してもドキュメントに表示されないので、グリッド線を付けて表全体が見えるようにします。これは、Styleオブジェクトを取得し、GridLinesオブジェクトのAllプロパティに、LineDefオブジェクトを作成して設定します。

 また、テーブル作成の時点では3列とも同じセル幅なので、1列目のセルだけ幅を狭くします。これは、テーブルのColsプロパティで1列目(インデックス番号は0)を指定し、Widthプロパティを設定します。設定値の単位はUnitで、ここでは1cmの幅になるようにします。

 併せて、セルの高さも設定します。これは、Rowsプロパティで行を指定し、Heightプロパティを設定します。同じく設定値はUnitで、0.5cmの高さになるように指定しています。これを行数分実行し、1行ずつ高さを指定していきます。

Visual Basic
'グリッド線の追加
table1.Style.GridLines.All = New LineDef(Color.DarkGray)

'セルのサイズを設定
Dim i As Integer
For i = 0 To 10
    table1.Rows(i).Height = New Unit(0.5, UnitTypeEnum.Cm)
Next

table1.Cols(0).Width = New Unit(1, UnitTypeEnum.Cm)
C#
//グリッド線の追加
table1.Style.GridLines.All = new LineDef(Color.DarkGray);

//セルのサイズを設定
int i;
for(i=0; i<=10; i++)
{
    table1.Rows[i].Height = new Unit(0.5, UnitTypeEnum.Cm);
}

table1.Cols[0].Width = new Unit(1, UnitTypeEnum.Cm);
作成したテーブル
作成したテーブル

なお、高さや幅は次のように文字列を設定することも可能です。

table1.Rows(i).Height = “0.5cm”
table1.Cols(0).Width = “1cm”

次のページ
まとめ

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

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

もっと読む

この記事の著者

瀬戸 遥(セト ハルカ)

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

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

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

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5525 2010/10/26 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング