最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

テーブルの作成と書式設定

2 つのタイプのテーブル

DOM API を使用して、構造が異なる 2 つのタイプのテーブルを作成できます。

  • 略式テーブル (すなわち、テーブル) は、テーブル エントリが含まれる行から構成。

  • 形式的テーブルは、ヘッダー、本体およびフッターのセクションを含む。各セクションには、テーブル エントリのある行が含まれます。

略式テーブルは大半のレポート ニーズに役立ちます。ヘッダーまたはフッターに複数の行を含むテーブルには、形式的テーブルを使用します。

略式テーブルの詳細については、以下を参照してください。

形式的テーブルの詳細については、以下を参照してください。

2 次元配列からのテーブルの作成

2 次元の数値配列か、組み込みの MATLAB® データ (テキストと数値) および DOM オブジェクト (TextTableImage など) を含む cell 配列をドキュメントに追加することで、テーブルを作成できます。関数 append は、配列を Table オブジェクトに変換してドキュメントに追加し、その Table オブジェクトを返します。その後、このオブジェクトを書式設定できます。2 次元配列をコンストラクターに含めることで Table オブジェクトを直接作成することもできます。

この例は、数値配列からテーブルを作成する方法と、さまざまなオブジェクト タイプの cell 配列から別のテーブルを作成する方法を示します。cell 配列には魔方陣が含まれます。この魔方陣は内部テーブルとしてレンダリングされます。この cell 配列には、AlertLevel テンプレート スタイルを使用する Text オブジェクト コンストラクターも含まれています。

import mlreportgen.dom.*;
doc = Document('test');

table1 = append(doc,magic(5));
table1.Border = 'single';
table1.ColSep = 'single';
table1.RowSep = 'single';

ca = {'text entry',Paragraph('a paragraph entry'); ...
       Text('Danger!','AlertLevel'),magic(4)};
table2 = Table(ca);
append(doc,table2);

close(doc);
rptview(doc.OutputPath);

テーブルの関数 entry を使用したテーブルの作成

Table オブジェクトで関数 entry を使用して、テーブル エントリにコンテンツを追加したり、エントリを書式設定できます。この方法は、テーブル エントリを個別に書式設定する必要がある場合に便利です。例:

import mlreportgen.dom.*;
doc = Document('test');

a = magic(5);
[v,i] = max(a);
[v1,i1] = max(max(a));
table = Table(a);

text = table.entry(i(i1),i1).Children(1);
text.Color = 'red';
append(doc,table);

close(doc);
rptview(doc.OutputPath);

ゼロからのテーブルの作成

TableEntry オブジェクトを作成し、それを TableRow オブジェクトに追加して、この TableRow オブジェクトを Table オブジェクトに追加することで、テーブルをゼロから作成できます。この方法は、エントリ数が異なる複数の列または行にまたがるテーブル エントリを作成する必要がある場合に便利です。この例では、2 行 4 列のテーブルを作成する方法を示します。最初のテーブル行では、2 番目のエントリが 2 列目と 3 列目にまたがります。

import mlreportgen.dom.*;
doc = Document('test');

table = Table(4);
table.Border = 'single';
table.ColSep = 'single';
table.RowSep = 'single';

row = TableRow;
append(row, TableEntry('entry 11'));
te = TableEntry('entry 12-13');
te.ColSpan = 2;
te.Border = 'single';
append(row, te);
append(row, TableEntry('entry 14'));
append(table,row);

row = TableRow;
for c = 1:4
  append(row, TableEntry(sprintf('entry 2%i', c)));
end
append(table,row);

append(doc,table);

close(doc);
rptview(doc.OutputPath);

テーブルの書式設定

DOM の書式オブジェクトまたは書式プロパティを使用して、プログラムによってテーブルを書式設定できます。テンプレート スタイルを使用することもできます。これらの書式設定の手法および書式の継承の詳細については、レポートの書式設定方法を参照してください。

プログラムによるテーブルの書式設定

書式オブジェクトを使用してテーブルを書式設定したり、Table 書式プロパティを使用して一般的に使用されるテーブル書式を指定できます。この例では以下を使用します。

  • 赤いテーブルの境界線と、緑の列区切りおよび行区切りを指定する BorderColSep および RowSep 書式オブジェクト

  • テーブルの幅を指定する Width 書式プロパティ

import mlreportgen.dom.*;
d = Document('test','html');

table = Table(magic(5));
table.Style = {Border('inset','red','3px'), ...
               ColSep('single','green','1px'), ...
               RowSep('single','green','1px')};

table.Width = '50%';

append(d, table);

close(d);
rptview(d.OutputPath);

以下の書式オブジェクトと書式プロパティを使用して、テーブルを書式設定します。

書式設定書式オブジェクト書式プロパティ

テーブルの幅

Width

Width

テーブルの背景色

BackgroundColor

BackgroundColor

テーブルの周囲の境界線の作成

Border

Border

境界線の色

Border

BorderColor

境界線の太さ

Border

BorderWidth

テーブルの上下左右の境界線の作成

Border

N/A

テーブルとテーブル エントリの境界線の折りたたみ (HTML)

BorderCollapse

BorderCollapse

列の区切りの作成

ColSep

ColSep

列の区切りの色

ColSep

ColSepColor

列の区切りの太さ

ColSep

ColSepWidth

行の区切りの作成

RowSep

RowSep

行の区切りの色

RowSep

RowSepColor

行の区切りの太さ

RowSep

RowSepWidth

左余白からのテーブルのインデント

OuterMargin

OuterLeftMargin

テーブルの前後の空白

OuterMargin

N/A

テーブルの右側の空白

OuterMargin

N/A

テーブルの左揃え、右揃え、中央揃え

HAlign

HAlign

テーブル エントリの方向の指定 (左から右または右から左)

FlowDirection

FlowDirection

コンテンツに合わせたテーブル列のサイズ変更

ResizeToFitContents

N/A

テーブル エントリの書式設定

Table オブジェクトには、そのすべてのエントリに対して同じ書式や同じ一連の書式を指定できるプロパティがあります。

書式設定テーブル オブジェクト プロパティ

エントリの垂直方向揃え (上、中央、下)

TableEntriesValign

エントリの水平方向揃え (左、右、中央)

TableEntriesHalign

エントリの境界とコンテンツ間の空白 (パディング) の作成

TableEntriesInnerMargin

すべてのテーブル エントリへの一連の書式オブジェクトの適用

TableEntriesStyle

mlreportgen.dom.TextOrientation 書式オブジェクトを使用すると、テーブル エントリのテキストを垂直方向または水平方向にできます。

テーブルとタイトルを同一ページに保持する

テーブル タイトルとそのテーブルを同じページ上に一緒に保持するには、KeepLinesTogether および KeepWithNext 段落書式を使用します。この例では、テーブル タイトルの作成とテーブル コンテンツの作成を行い、テーブル エントリのインデックス付けを使用してテーブル ヘッダー行を太字にします。テーブルを同じページ上に保持するには、最後の行を除くすべての行に対して、コードで KeepLinesTogetherKeepWithNext を指定します。最後の行には、KeepLinesTogether 設定のみを指定し、KeepWithNext は指定しません。これにより、テーブルが次の段落と強制的に一緒にされることがなくなります。

import mlreportgen.dom.*
rpt = Document('test','docx');
 
p = Paragraph('Table 1');
p.Style = {Bold,KeepLinesTogether,KeepWithNext};
append(rpt, p);
 
ca = {Paragraph('Col 1'),Paragraph('Col 2'); ...
      Paragraph('data 11'),Paragraph('Data 12'); ...
      Paragraph('data 21'),Paragraph('Data 22')};
 
ca{1,1}.Children(1).Bold = true;
ca{1,2}.Children(1).Bold = true;
 
for r = 1:2
    for c = 1:2
        ca{r, c}.Style = {KeepLinesTogether,KeepWithNext};
    end
end
 
for c = 1:2
    ca{3, c}.Style = {KeepLinesTogether};
end
 
 append(rpt, ca);
 
close(rpt);
rptview(rpt.OutputPath);

Microsoft Word スタイル シートを使用したテーブルの書式設定

テンプレートの既存の Word スタイルや、変更や追加を行ったテンプレート スタイルを使用して、テーブルを書式設定できます。

Word テンプレートでテーブル スタイルを定義するには、まず次の手順に従います。

  1. レポートで使用する Word テンプレートを開きます。

  2. [スタイル] ペインを開きます。

  3. [スタイルの管理] ボタン をクリックします。

  4. [新しいスタイル] をクリックします。

  5. [書式から新しいスタイルを作成] ダイアログ ボックスで、[種類][表] に設定します。

DOM オブジェクトでの Word スタイルの使用の詳細については、Microsoft Word テンプレートでのスタイルの変更を参照してください。

スタイル シートを使用した HTML または PDF のテーブルの書式設定

テンプレートで定義した CSS スタイルを使用して、HTML と PDF のテーブルを書式設定できます。

HTML または PDF テンプレートでテーブル スタイルを定義するには、table スタイルでセレクターを使用します。例:

table.MyTable {
  border-style: solid;
  border-bottom-color: rgb(128, 128, 128);
  border-bottom-width: thin;
  border-collapse: collapse;
}

ヒント

CSS の子セレクター (>) を使用して、テーブルの子の書式を指定します。たとえば、次の CSS コードは、スタイルが MyTable であるテーブルのテーブル エントリ (td 要素) の書式を指定します。

table.MyTable > tbody > tr > td { 
      font-family: Arial, Helvetica, sans-serif; 
      font-size: 11pt; 
      text-align: center; 
   } 

テーブルへのスタイルの適用

テンプレートでテーブル スタイルを定義したら、レポート プログラムで Table オブジェクト コンストラクターの 2 番目の引数として設定するか、それを Table オブジェクトの StyleName プロパティに設定することで、そのスタイルを Table オブジェクトに適用できます。たとえば、レポート用のテンプレートで BodyParaTableTitle および RuledTable という名前のスタイルを定義したとします。この例では、Paragraph コンストラクター、Paragraph オブジェクトの StyleName プロパティ、および Table コンストラクターでスタイル名を指定しています。

import mlreportgen.dom.*;
rank = 5;
rpt = Document('MyReport','html','MyTemplate');

p = Paragraph('Here is a magic square or rank 5:','BodyPara');
append(rpt,p);

p = Paragraph(sprintf('Rank %d MagicSquare',rank));
p.StyleName = 'TableTitle';

append(rpt,Table(magic(rank),'RuledTable'));

close(rpt);
rptview(rpt.OutputPath);

プログラムによる書式設定を使用して、テンプレートベースのテーブル スタイルで定義したスタイルをオーバーライドできます。たとえば、テンプレートで UnruledTable という名前のテーブル スタイルを定義し、境界線、列の区切りまたは行の区切りのないテーブルを作成するとします。その後、レポート プログラムでこのスタイルをオーバーライドし、テーブルの周囲にフレームを描画できます。

import mlreportgen.dom.*;
rpt = Document('MyReport','html','MyTemplate');

table = Table(magic(5),'UnruledTable');
table.Border = 'single';
append(rpt,table);

close(rpt);
rptview(rpt.OutputPath);

形式的テーブルの作成

形式的テーブルを作成するには、略式テーブルの場合と同じ基本的な方法を使用しますが、形式的テーブルの作成では mlreportgen.domlFormalTable コンストラクターを使用する点が異なります。このコンストラクターは、本体、ヘッダーおよびフッターのセクションについて、必要に応じて 2 次元の数値配列か、MATLAB データの cell 配列を受け取ります。

形式的テーブルを完全にまたは部分的にゼロから作成する場合、FormalTable オブジェクトの関数 appendHeaderRow および appendBodyRow を使用して、テーブルのヘッダーおよびフッターのセクションに行を追加できます。関数 FormalTable.append は、本体のセクションに行を追加します。あるいは、FormalTable オブジェクトの HeaderBody または Footer プロパティを使用して、セクションにアクセスできます。

import mlreportgen.dom.*
d = Document('test');

t = FormalTable({'a','b';'c','d'});

r = TableRow();
append(r,TableEntry('Column 1'));
append(r,TableEntry('Column 2'));
append(t.Header,r);

append(d,t);

close(d);
rptview(d.OutputPath);

形式的テーブルの書式設定

DOM の書式オブジェクトまたは書式プロパティを使用して、プログラムによって形式的テーブルを書式設定できます。テンプレート スタイルを使用することもできます。これらの書式設定の手法および書式の継承の詳細については、レポートの書式設定方法を参照してください。

プログラムによる形式的テーブルの書式設定

形式的テーブルは、略式テーブルを書式設定するのと同じ方法でプログラムによって書式設定できます。略式テーブルに適用される書式オブジェクトと書式プロパティは、形式的テーブルにも適用されます。さらに、略式テーブルのヘッダー、本体およびフッターのセクションをプログラムで書式設定できます。テーブルとそのいずれかのセクションの書式を指定すると、そのセクションに対して指定した値で、テーブル全体に対して指定した値がオーバーライドされます。形式的テーブルの書式が形式的テーブルのセクションにすべて適用されるわけではありません。たとえば、ヘッダー、本体またはフッターのセクションを、それらを含むテーブルとは無関係に個別にインデントすることはできません。つまり、OuterLeftMargin プロパティは形式的テーブルのセクションには適用されません。

形式的テーブルとそのセクションへのテーブル スタイルの適用

テンプレートの形式的テーブル スタイルを定義するには、略式テーブル スタイルを定義する場合と同じ手順を使用します。

形式的テーブルとその各セクションに対してテーブル スタイルを適用できます。テーブル自体とそのいずれかのセクション (ヘッダーなど) にテーブル スタイルを適用すると、そのセクションのスタイルでテーブル スタイルがオーバーライドされます。

メモ

テーブル スタイルを Word の形式的テーブルの 1 つ以上のセクションに適用する場合は、各テーブル列の幅を指定します。そうしない場合、セクションの列が揃わない可能性があります。

テーブル行の作成と書式設定

ゼロからテーブルを作成する場合、TableRow コンストラクターを使用して行を作成できます。行を書式設定した後、作成するテーブルにその行を追加します。

テーブル行の作成

mlreportgen.dom.TableRow コンストラクターは引数を取らず、TableRow オブジェクトを返します。その後、そのオブジェクトに対して TableEntry オブジェクトを作成して追加することで、行の作成を完了できます。行を作成したら、関数 append を使用して行をテーブルに追加できます。この例では、2 行 2 列のテーブルを作成します。

import mlreportgen.dom.*
rpt = Document('test');

table = Table(2); 
 
row = TableRow();
append(row,TableEntry('Col1'));
append(row,TableEntry('Col2'));
append(table,row);
 
row = TableRow();
append(row,TableEntry('data11'));
append(row,TableEntry('data12'));
append(table,row);
 
append(rpt,table);

close(rpt);
rptview(rpt.OutputPath);

テーブルの行の書式設定

以下の書式オブジェクトと書式プロパティを使用して、テーブルの行を書式設定します。

行の高さの書式設定書式オブジェクト書式プロパティ

行の厳密な高さの指定

RowHeight

Height

行の高さの最小値の指定 (Word のみ)

RowHeight

N/A

テーブルがページ間をまたぐ場合にこの行をヘッダー行として反復

RepeatAsHeaderRow

N/A

この行がページの境界をまたぐことを許可

AllowBreakAcrossPages

N/A

テーブル列の書式設定

テーブル列を書式設定するには、mlreportgen.dom.TableColSpecGroup オブジェクトを単独で使用するか、このオブジェクトを mlreportgen.dom.TableColSpecGroup オブジェクトと共に使用します。TableColSpecGroup オブジェクトを使用して、隣接するテーブル列のグループの書式を指定します。TableColSpec オブジェクトを使用すると、一部のテーブル列に対して、列のグループの一部またはすべての書式がオーバーライドされます。この例の TableColSpecGroup プロパティは、列幅 0.2 インチ、緑のテキストを指定します。TableColSpec は、幅 0.5 インチ、太字の赤いテキストを指定して、最初の列のこれらの書式をオーバーライドします。

import mlreportgen.dom.*
rpt = Document('test');

rank = 5;
table = Table(magic(rank));
table.Border = 'single';
table.BorderWidth = '1px';

grps(1) = TableColSpecGroup;
grps(1).Span = rank;
grps(1).Style = {Width('0.2in'),Color('green')};

specs(1) = TableColSpec;
specs(1).Span = 1;
specs(1).Style = {Width('0.5in'),Bold,Color('red')};

grps(1).ColSpecs = specs;

table.ColSpecGroups = grps;
append(rpt,table);

close(rpt);
rptview(rpt.OutputPath);

列のテーブル エントリの最も幅の広いコンテンツに合うように列のサイズを変更するには、テーブルの Style プロパティに ResizeToFitContents オブジェクトを含めます。

テーブル エントリの作成と書式設定

テーブルをゼロから作成する必要がある場合、mlreportgen.dom.TableEntry コンストラクターを使用してテーブル エントリを作成できます。次に、そのテーブル エントリを書式設定して、テーブル行に追加します。その後、作成しているテーブルにそのテーブル行を追加できます。cell 配列から作成したテーブルのエントリを書式設定する必要がある場合は、TableEntry または TableRow の関数 entry を使用してエントリへのアクセスを取得した後、そのエントリを書式設定できます。

テーブル エントリの作成

TableEntry コンストラクターを使用して、テーブル エントリを作成します。オプションで、このコンストラクターを使用して、次の種類のエントリ コンテンツを指定できます。

  • 文字配列

  • 次の任意の種類の DOM オブジェクト

    • Paragraph

    • Text

    • Image

    • Table

    • OrderedList

    • UnorderedList

    • CustomElement

プログラムによるテーブル エントリの書式設定

書式オブジェクトまたは TableEntry 書式プロパティを使用して、テーブル エントリをプログラムによって書式設定できます。

書式設定書式オブジェクト書式プロパティ

エントリの周囲の境界線の作成

Border

Border

境界線の色

Border

BorderColor

境界線の太さ

Border

BorderWidth

エントリの上下左右の境界線の作成

Border

N/A

エントリ コンテンツの上揃え、下揃え、中央揃え

VAlign

VAlign

エントリの境界とエントリ コンテンツ間の空白

InnerMargin

InnerMargin

エントリ コンテンツとその上下左右の境界線間の空白

InnerMargin

N/A

エントリを複数の列に拡張

ColSpan

ColSpan

エントリを複数の行に拡張

RowSpan

RowSpan

Table または FormalTable オブジェクトの TableEntriesStyle プロパティを使用すると、テーブルのすべてのテーブル エントリの書式設定を指定できます。たとえば、境界線の書式設定を設定できます。

import mlreportgen.dom.*
t = Table(magic(5));
t.TableEntriesStyle = {Border('solid','black','1px')};

TableEntry オブジェクトに設定したプロパティは、TableEntriesStyle 書式オブジェクトよりも優先されます。

スタイル シートを使用したテーブル エントリの書式設定

HTML レポートの場合、HTML テンプレートのスタイル シートで定義したスタイルを使用して、テーブル エントリを書式設定できます。テーブル エントリのスタイルを定義する場合、td 要素セレクターを使用します。例:

td.TableEntryWithBorder {
  border:5px solid red;
}

テンプレート定義スタイルをテーブル エントリに適用するには、TableEntry オブジェクトの StyleName プロパティをスタイルの名前に設定するか、TableEntry コンストラクターの 2 番目の引数としてスタイル名を指定します。例:

te = TableEntry('Hello World','TableEntryWithBorder');

参考

クラス

関数

関連する例

詳細