Main Content

テーブルの列幅の設定

この例では、DOM Table と DOM FormalTable の列幅を設定する方法を示します。

長い完全修飾クラス名を使用せずに済むよう、DOM API 名前空間をインポートします。

import mlreportgen.dom.*

ドキュメントを作成して開きます。Word ドキュメントを作成するには、出力タイプを pdf から docx に変更します。HTML ドキュメントを作成するには、pdf を、複数ファイル ドキュメントの場合は html に、単一ファイル ドキュメントの場合は html-file にそれぞれ変更します。

d = Document("mydoc","pdf");
open(d);

後のセクションで使用するテーブル、テーブル エントリ、およびヘッダー行のスタイルを定義します。

tableStyle = ...
    { ...
    Width("100%"), ...
    Border("solid"), ...
    RowSep("solid"), ...
    ColSep("solid") ...
    };

tableEntriesStyle = ...
    { ...
    HAlign("center"), ...
    VAlign("middle") ...
    };

headerRowStyle = ...
    { ...
    InnerMargin("2pt","2pt","2pt","2pt"), ...
    BackgroundColor("gray"), ...
    Bold(true) ...
    };

テーブル ヘッダー行とテーブル本体のコンテンツを定義します。これは、後で 3 列の DOM Table と DOM FormalTable を作成するために使用します。

headerContent = ...
    { ...
    'First Name', 'Last Name', 'Address' ...
    };

bodyContent = ...
    { ...
    'John', 'Smith', 'Natick, MA'; ...
    'Jane', 'Doe', 'Boston, MA'; ...
    'Robert', 'Stewart', 'Natick, MA' ...
    };

以下のコードは、DOM TableColSpecGroup を使用して、テーブル内の列のグループについてスタイルを定義します。Span プロパティを 3 に設定すると、テーブルの 3 つの列すべてにグループの書式設定が適用されます。グループ内の 1 つ以上の隣接するテーブル列を書式設定するには、DOM TableColSpec オブジェクトを使用します。最初の TableColSpec オブジェクト specs(1) は、グループの最初の 2 列にまたがります。Style プロパティで Width 書式を設定して、これら 2 つの列のそれぞれがテーブルの幅の 20% になるようにします。2 番目の TableColSpec オブジェクト specs(2) は、単一の列、つまりグループの 3 番目の列にまたがり、テーブルの幅の 60% になるように書式設定されています。

grps(1) = TableColSpecGroup;
grps(1).Span = 3;

specs(1) = TableColSpec;
specs(1).Span = 2;
specs(1).Style = {Width("20%")};

specs(2) = TableColSpec;
specs(2).Span = 1;
specs(2).Style = {Width("60%")};

grps(1).ColSpecs = specs;

以下のコードは、見出しと DOM Table をドキュメントに追加します。上記のコードで作成された grps をテーブルの ColSpecGroups プロパティに割り当てると、最初の 2 列がテーブルの幅の 20% になり、3 番目の列が 60% になります。このコードは、テーブル、テーブル エントリ、およびテーブルの最初の行にもスタイルを割り当てます。

append(d,Heading1("Set column width for a DOM Table"));

tableContent = [headerContent; bodyContent];

table = Table(tableContent);
table.ColSpecGroups = grps;

table.Style = tableStyle;
table.TableEntriesStyle = tableEntriesStyle;

firstRow = table.Children(1);
firstRow.Style = headerRowStyle; 

append(d,table);

以下のコードは、見出しと DOM FormalTable をドキュメントに追加します。grps を形式的テーブルの ColSpecGroups プロパティに割り当てると、最初の 2 列がテーブルの幅の 20% になり、3 番目の列が 60% になります。このコードは、形式的テーブル、テーブル エントリ、および形式的テーブルのヘッダー行にもスタイルを割り当てます。

append(d,Heading1("Set column width for a DOM FormalTable"));

formalTable = FormalTable(headerContent,bodyContent);
formalTable.ColSpecGroups = grps;

formalTable.Style = tableStyle;
formalTable.TableEntriesStyle = tableEntriesStyle;

headerRow = formalTable.Header.Children;
headerRow.Style = headerRowStyle; 

append(d,formalTable);

ドキュメントを閉じて表示します。

close(d);
rptview(d);