Main Content

テーブルの書式設定

レポートにテーブルを作成するには、mlreportgen.dom.Tablemlreportgen.dom.FormalTablemlreportgen.dom.MATLABTable、または mlreportgen.report.BaseTable オブジェクトを使用できます。作成するテーブルの種類の選択を参照してください。次の方法を使用して、これらのタイプのテーブルまたはテーブルの要素 (セクション、行、列グループ、またはエントリ) を書式設定できます。

  • テーブルを作成する前にコンテンツを書式設定する。たとえば、数値を使用してテーブルを作成する前に、MATLAB® で数値を書式設定します。テーブル内の数値の書式設定を参照してください。

  • DOM オブジェクトからテーブルを作成する前に、DOM オブジェクトを書式設定する。たとえば、テーブル エントリの作成に使用する前に、mlreportgen.dom.Paragraph オブジェクトを書式設定します。

  • 既定のテンプレート スタイルを変更するか、テーブルまたはテーブル要素のカスタム テンプレート スタイルを作成する。テンプレート定義スタイルを使用したテーブルの書式設定を参照してください。

  • テーブルまたはテーブル要素を表すオブジェクトと共に書式プロパティと書式オブジェクトを使用して、テンプレート スタイルをオーバーライドする。プログラムによるテーブルの書式設定を参照してください。

MATLABTable テーブルの書式設定に固有の情報については、MATLAB table からのテーブルの作成を参照してください。BaseTable テーブルの書式設定に固有の情報については、Create Report API Base Tablesを参照してください。

テーブル オブジェクト、テーブル要素オブジェクト、またはテーブル要素オブジェクトに含まれるオブジェクトの場合、書式プロパティまたは書式オブジェクトによって指定された書式は、テンプレートベースのスタイルによって指定された同等の書式をオーバーライドします。オブジェクトに指定された書式は、コンテナー オブジェクトによって指定された同等の書式をオーバーライドします。たとえば、テーブル エントリに mlreportgen.dom.Paragraph オブジェクトが含まれている場合、Paragraph オブジェクトに指定されたテキストの色は、それを含む行に指定された色をオーバーライドします。行の色は、その行を含むテーブルに指定された色をオーバーライドします。書式の継承を参照してください。

テンプレート定義スタイルを使用したテーブルの書式設定

テーブルとテーブルの要素には、既定のテンプレート定義スタイルがあります。Microsoft® Word でのスタイルの操作や HTML または PDF レポートのカスケード スタイル シート (CSS) の編集に慣れており、カスタマイズを複数のテーブルに適用するような場合には、テンプレート定義スタイルをカスタマイズすることを検討してください。

Word のテーブル スタイルの作成

テーブルにカスタム Microsoft Word スタイルを適用することで、テーブルを書式設定できます。テーブル スタイルを Word の形式的テーブルの 1 つ以上のセクションに適用する場合は、テーブルの各列の幅を指定します。そうしない場合、セクションの列が整列しないことがあります。

Word スタイル シートでテーブル スタイルを定義するには、次のようにします。

  1. Microsoft Word テンプレートを作成します。Microsoft Word テンプレートの作成の詳細については、Microsoft Word テンプレートの作成を参照してください。

  2. 次のいずれかの方法で、Word テンプレート ファイルを開きます。

    • MATLAB の [現在のフォルダー] ペインでテンプレート ファイルを右クリックし、[MATLAB の外部で開く] をクリックします。

    • MATLAB の外でファイルを右クリックし、[開く] をクリックします。

      メモ

      Word テンプレート ファイルをダブル クリックで開かないようにしてください。ファイルをダブル クリックすると、テンプレートを適用した Word ドキュメント ファイルが開きます。

  3. Word の [ホーム] タブの [スタイル] グループで、[スタイル] アイコン をクリックします。

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

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

  6. [書式から新しいスタイルを作成] ダイアログ ボックスで、次のようにします。

    • [名前] を指定。

    • [種類][表] に設定。

    • [基準にするスタイル] で、新しいスタイルの基準となるスタイルを選択。

    • [書式] セクションで、適用する書式およびテーブルのどの部分にその書式を適用するかを指定。

  7. [このテンプレートを使用した新規文書] を選択し、[OK] をクリックします。

  8. [スタイルの管理] ダイアログ ボックスで、[このテンプレートを使用した新規文書] を選択し、[OK] をクリックします。

  9. テンプレートを保存します。

Word テンプレートを使用した書式設定の例については、Create a Zebra-Striped Tableを参照してください。

HTML または PDF のテーブル スタイルの作成

テンプレートで定義された CSS スタイルを使用して、HTML および PDF テーブルを書式設定できます。HTML または PDF テンプレートの作成については、HTML および PDF のテンプレートの作成を参照してください。

HTML または PDF テンプレートでテーブル スタイルを定義するには、table セレクターとクラス名を使用します。たとえば、次の CSS コードはクラス MyTable のテーブルのスタイルを指定します。

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 td { 
      font-family: Arial, Helvetica, sans-serif; 
      font-size: 11pt; 
      text-align: center; 
   } 

HTML テンプレートでのスタイルの変更PDF テンプレートでのスタイルの変更を参照してください。

CSS の編集の詳細については、https://developer.mozilla.org/en-US/docs/Web/CSS/Referenceなどのドキュメンテーションを参照してください。

HTML テンプレートを使用した書式設定の例については、Create a Zebra-Striped Tableを参照してください。

テーブルまたはテーブル要素へのスタイルの適用

テンプレートでスタイルを定義したら、レポート プログラムのテーブルまたはテーブル要素を表すオブジェクトにスタイルを適用できます。スタイルを引数としてオブジェクト コンストラクターに渡すか、オブジェクトの StyleName プロパティにスタイルを割り当てます。mlreportgen.dom.TableHeader オブジェクト、mlreportgen.dom.TableBody オブジェクト、または mlreportgen.dom.TableEntry オブジェクトの StyleName プロパティにスタイルを割り当てることで、mlreportgen.dom.FormalTable または mlreportgen.dom.MATLABTable オブジェクトのヘッダー、本文、またはフッター セクションにそのスタイルを適用できます。

たとえば、レポートのテンプレートで 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);

プログラムによる書式設定の詳細については、プログラムによるテーブルの書式設定を参照してください。

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

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

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

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

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

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

CSS の編集に慣れていない場合、またはテーブルやテーブル要素が少ししかない既定のテーブル スタイルをオーバーライドしたい場合には、テーブルおよびテーブル要素をプログラムで書式設定できます。次のいずれかの方法を使用します。

  • テーブルまたはテーブル要素を表すオブジェクトの書式プロパティを設定する。

  • テーブルまたはテーブル要素を表すオブジェクトの Style プロパティに書式オブジェクトを追加する。新しい書式オブジェクトを含む cell 配列と Style プロパティの既存の値を連結して、書式オブジェクトを追加します。例:

    table.Style = [table.Style {Border('solid','black','3px')}];

mlreportgen.dom.Table オブジェクト、mlreportgen.dom.FormalTable オブジェクト、および mlreportgen.dom.MATLABTable オブジェクトに適用される書式オブジェクトおよび対応する書式プロパティの一部を次に示します。

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

テーブルの幅

mlreportgen.dom.Width

Width

テーブルの背景色

mlreportgen.dom.BackgroundColor

BackgroundColor

テーブルの境界線を指定

mlreportgen.dom.Border

Border

境界線の色

mlreportgen.dom.Border

BorderColor

境界線の太さ

mlreportgen.dom.Border

BorderWidth

テーブルの上下左右の境界線を指定

mlreportgen.dom.Border

N/A

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

mlreportgen.dom.BorderCollapse

BorderCollapse

列区切りを指定

mlreportgen.dom.ColSep

ColSep

列区切りの色

mlreportgen.dom.ColSep

ColSepColor

列区切りの太さ

mlreportgen.dom.ColSep

ColSepWidth

行区切りを指定

mlreportgen.dom.RowSep

RowSep

行区切りの色

mlreportgen.dom.RowSep

RowSepColor

行区切りの太さ

mlreportgen.dom.RowSep

RowSepWidth

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

mlreportgen.dom.OuterMargin

OuterLeftMargin

テーブルの前後の空白

mlreportgen.dom.OuterMargin

N/A

テーブルの右側の空白

mlreportgen.dom.OuterMargin

N/A

テーブルを左、右、または中央揃えにする

mlreportgen.dom.HAlign

HAlign

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

mlreportgen.dom.FlowDirection

FlowDirection

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

mlreportgen.dom.ResizeToFitContents

N/A

テーブルに含まれるオブジェクトに適用される他の書式オブジェクトを使用できます。DOM API は、特定のオブジェクトに適用されない書式オブジェクトを無視します。

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

テーブル全体に適用される書式設定の場合は、テーブル全体を表すオブジェクトと共に書式プロパティと書式オブジェクトを使用します。この例では、書式オブジェクトを使用して、テーブルの境界線および行と列の区切りを指定します。書式プロパティを使用して背景色を指定します。

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

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

table.BackgroundColor = 'lightsteelblue';

append(d, table);

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

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

書式プロパティと書式オブジェクトを使用して、mlreportgen.dom.FormalTable および mlreportgen.dom.MATLABTable オブジェクトを書式設定できます。テーブルとそのセクションの 1 つに書式を指定すると、セクションに指定した値がテーブル全体の値をオーバーライドします。形式的テーブルのすべての書式が形式的テーブルのセクションに適用されるわけではありません。たとえば、OuterLeftMargin プロパティは形式的テーブルのセクションに適用されません。ヘッダー、本体、またはフッターのセクションは、それを含むテーブルと別個にインデントできません。

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

書式設定のためにテーブル エントリにアクセスするには、mlreportgen.dom.Table オブジェクト、mlreportgen.dom.TableHeader オブジェクト、mlreportgen.dom.TableBody オブジェクト、または mlreportgen.dom.TableFooter オブジェクトの entry メソッドを使用できます。

entry メソッドは、mlreportgen.dom.TableEntry オブジェクトまたは mlreportgen.dom.TableHeaderEntry オブジェクトを返します。エントリを書式設定するには、以下の TableEntry 書式プロパティまたは書式オブジェクトを使用できます。

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

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

mlreportgen.dom.Border

Border

境界線の色

mlreportgen.dom.Border

BorderColor

境界線の太さ

mlreportgen.dom.Border

BorderWidth

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

mlreportgen.dom.Border

N/A

エントリのコンテンツを上、下、または中央揃えにする

mlreportgen.dom.VAlign

VAlign

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

mlreportgen.dom.InnerMargin

InnerMargin

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

mlreportgen.dom.InnerMargin

N/A

エントリが複数の列にまたがるようにする

n/a

ColSpan

エントリが複数の行にまたがるようにする

n/a

RowSpan

テーブル エントリに含まれるオブジェクトに適用される他の書式オブジェクトを使用できます。DOM API は、特定のオブジェクトに適用されない書式オブジェクトを無視します。

この例では、関数 magic の出力からテーブルを作成し、テーブルの最も大きい数値を赤にします。

5-by-5 table of numbers. The entry in row five, column three is 25 and red.

import mlreportgen.dom.*;

d = Document('test','pdf');

m = magic(5);
[v,i] = max(m);
[v1,i1] = max(max(m));
t = Table(m);
t.Border = 'single';
t.ColSep = 'single';
t.RowSep = 'single';

t.TableEntriesInnerMargin = '2pt';
t.TableEntriesHAlign = 'right';

maxnum = entry(t,i(i1),i1);
maxnum.Children(1).Color = 'Red';

append(d,t);

close(d);
rptview(d);

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

DOM テーブルまたは DOM テーブルのセクションのすべてのエントリに同じ書式または書式セットを指定するには、次のプロパティを使用できます。

  • TableEntriesValign

  • TableEntriesHalign

  • TableEntriesInnerMargin

  • TableEntriesStyle

この例では、MATLAB table からテーブルを作成します。例では、次を行います。

  • TableEntriesStyle プロパティに書式オブジェクトを追加して、テーブル本体のすべてのエントリを青にする

  • すべての TableEntriesHalign プロパティを設定して、テーブル本体のすべてのエントリを中央揃えにする

Table with three columns: Age, Weight, and Height. Each column has five rows. The numbers are blue.

import mlreportgen.dom.*
d = Document('outermargin','docx');

import mlreportgen.dom.*
d = Document('myMATLABTable','pdf');

Age = [38;43;38;40;49];
Height = [71;69;64;67;64];
Weight = [176;163;131;133;119];
mltable = table(Age,Weight,Height);

mltableObj = MATLABTable(mltable);
tbodyObj = mltableObj.Body;
tbodyObj.TableEntriesStyle = {Color('blue')};
tbODYObj.TableEntriesHAlign = 'center';

append(d,mltableObj);

close(d);
rptview(d);

テーブルの行の書式設定

書式設定のためにテーブルの行にアクセスするには、mlreportgen.dom.Table オブジェクト、mlreportgen.dom.TableHeader オブジェクト、mlreportgen.dom.TableBody オブジェクト、または mlreportgen.dom.TableFooter オブジェクトの row メソッドを使用できます。

row メソッドは、mlreportgen.dom.TableRow オブジェクトを返します。行を書式設定するには、以下の TableRow 書式プロパティまたは書式オブジェクトを使用できます。

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

行の正確な高さを指定

mlreportgen.dom.RowHeight

Height

行の最小の高さを指定 (Word レポートのみ)

mlreportgen.dom.RowHeight

N/A

テーブルがページをまたぐ際、この行がヘッダー行として繰り返されるようにする

mlreportgen.dom.RepeatAsHeaderRow

N/A

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

mlreportgen.dom.AllowBreakAcrossPages

N/A

行に含まれるオブジェクトに適用される他の書式オブジェクトを使用できます。DOM API は、特定のオブジェクトに適用されない書式オブジェクトを無視します。

この例では、関数 magic の出力からテーブルを作成し、最初の行のコンテンツを赤にします。

A 5-by-5 table of numbers. The first row is red and the other rows are black.

import mlreportgen.dom.*;

d = Document('test','pdf');

m = magic(5);
[v,i] = max(m);
[v1,i1] = max(max(m));
t = Table(m);
t.Border = 'single';
t.ColSep = 'single';
t.RowSep = 'single';

t.TableEntriesInnerMargin = '2pt';
t.TableEntriesHAlign = 'right';

r = row(t,1);
r.Style = [r.Style {Color('red')}];
append(d,t);
close(d);
rptview(d);

テーブルの列の書式設定

隣接するテーブル列のグループの書式を指定するには、mlreportgen.dom.TableColSpecGroup オブジェクトを使用します。一部の列の列グループの書式をオーバーライドするには、mlreportgen.dom.TableColSpec オブジェクトを使用します。

次の例では、TableColSpecGroup オブジェクトが緑のテキストを指定しています。TableColSpec オブジェクトは、最初の列の書式をオーバーライドし、赤の太字テキストを指定します。

A 5-by-5 table of numbers. The first column is red. The other columns are green.

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

rank = 5;
t = Table(magic(rank));
t.Border = 'single';
t.ColSep = 'single';
t.RowSep = 'single';
t.TableEntriesInnerMargin = '2pt';
t.TableEntriesHAlign = 'right';

%Specify the formats for all columns
grps(1) = TableColSpecGroup;
grps(1).Span = rank;
grps(1).Style = {Color('green')};

%Specify the formats for the first column
specs(1) = TableColSpec;
specs(1).Span = 1;
specs(1).Style = {Bold(true),Color('red')};

grps(1).ColSpecs = specs;

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

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

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

参考

| | | | | | | |

関連するトピック

外部の Web サイト