テーブルの作成
今度は新しいページを追加し、テーブル機能を使ってテキストデータを表にします。
元データは「sample_data.txt」というファイルに格納してあり、「No」「メーカー名」「ギター名」という3種類のデータを1行ずつ改行して保存しています。データは、列見出しを含め全部で11行分あります。このデータを1行ずつ読み込み、3列11行の表を作成してそこに挿入します。
3列11行のテーブルの作成
最初に空のセルを持ったテーブルを作成し、そこにテキストデータを読み込んでセルに挿入していきます。
テーブルの作成は、RenderTableクラスのコンストラクタを実行し、RenderTextオブジェクトを作成して、テーブルのセルに追加します。この処理を3列11行分繰り返します。
'*************** 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
//*************** 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行ずつ高さを指定していきます。
'グリッド線の追加 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)
//グリッド線の追加 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”