このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
テーブルの書式設定
レポートにテーブルを作成するには、mlreportgen.dom.Table
、mlreportgen.dom.FormalTable
、mlreportgen.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 スタイル シートでテーブル スタイルを定義するには、次のようにします。
Microsoft Word テンプレートを作成します。Microsoft Word テンプレートの作成の詳細については、Microsoft Word テンプレートの作成を参照してください。
次のいずれかの方法で、Word テンプレート ファイルを開きます。
MATLAB の [現在のフォルダー] ペインでテンプレート ファイルを右クリックし、[MATLAB の外部で開く] をクリックします。
MATLAB の外でファイルを右クリックし、[開く] をクリックします。
メモ
Word テンプレート ファイルをダブル クリックで開かないようにしてください。ファイルをダブル クリックすると、テンプレートを適用した Word ドキュメント ファイルが開きます。
Word の [ホーム] タブの [スタイル] グループで、[スタイル] アイコン をクリックします。
[スタイルの管理] ボタン をクリックします。
[新しいスタイル] をクリックします。
[書式から新しいスタイルを作成] ダイアログ ボックスで、次のようにします。
[名前] を指定。
[種類] を
[表]
に設定。[基準にするスタイル] で、新しいスタイルの基準となるスタイルを選択。
[書式] セクションで、適用する書式およびテーブルのどの部分にその書式を適用するかを指定。
[このテンプレートを使用した新規文書] を選択し、[OK] をクリックします。
[スタイルの管理] ダイアログ ボックスで、[このテンプレートを使用した新規文書] を選択し、[OK] をクリックします。
テンプレートを保存します。
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
オブジェクトのヘッダー、本文、またはフッター セクションにそのスタイルを適用できます。
たとえば、レポートのテンプレートで BodyPara
、TableTitle
、および 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
オブジェクトに適用される書式オブジェクトおよび対応する書式プロパティの一部を次に示します。
書式設定 | 書式オブジェクト | 書式プロパティ |
---|---|---|
テーブルの幅 |
| |
テーブルの背景色 |
| |
テーブルの境界線を指定 |
| |
境界線の色 |
| |
境界線の太さ |
| |
テーブルの上下左右の境界線を指定 | N/A | |
テーブルとテーブル エントリの境界線を折りたたむ (HTML レポートのみ) |
| |
列区切りを指定 |
| |
列区切りの色 |
| |
列区切りの太さ |
| |
行区切りを指定 |
| |
行区切りの色 |
| |
行区切りの太さ |
| |
左余白からテーブルをインデント |
| |
テーブルの前後の空白 | N/A | |
テーブルの右側の空白 | N/A | |
テーブルを左、右、または中央揃えにする |
| |
テーブル エントリの配置方向を指定 (左から右または右から左) |
| |
コンテンツに合わせてテーブル列をサイズ変更 | 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
書式プロパティまたは書式オブジェクトを使用できます。
書式設定 | 書式オブジェクト | 書式プロパティ |
---|---|---|
エントリの周囲に境界線を作成 |
| |
境界線の色 |
| |
境界線の太さ |
| |
エントリの上下左右の境界線を作成 | N/A | |
エントリのコンテンツを上、下、または中央揃えにする |
| |
エントリ境界とエントリ コンテンツの間の空白 |
| |
エントリ コンテンツとその上下左右の境界との間の空白 | N/A | |
エントリが複数の列にまたがるようにする |
|
|
エントリが複数の行にまたがるようにする |
|
|
テーブル エントリに含まれるオブジェクトに適用される他の書式オブジェクトを使用できます。DOM API は、特定のオブジェクトに適用されない書式オブジェクトを無視します。
この例では、関数 magic
の出力からテーブルを作成し、テーブルの最も大きい数値を赤にします。
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
プロパティを設定して、テーブル本体のすべてのエントリを中央揃えにする
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
書式プロパティまたは書式オブジェクトを使用できます。
書式設定 | 書式オブジェクト | 書式プロパティ |
---|---|---|
行の正確な高さを指定 |
| |
行の最小の高さを指定 (Word レポートのみ) | N/A | |
テーブルがページをまたぐ際、この行がヘッダー行として繰り返されるようにする | mlreportgen.dom.RepeatAsHeaderRow | N/A |
この行がページ境界をまたぐことを許可 | mlreportgen.dom.AllowBreakAcrossPages | N/A |
行に含まれるオブジェクトに適用される他の書式オブジェクトを使用できます。DOM API は、特定のオブジェクトに適用されない書式オブジェクトを無視します。
この例では、関数 magic の出力からテーブルを作成し、最初の行のコンテンツを赤にします。
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
オブジェクトは、最初の列の書式をオーバーライドし、赤の太字テキストを指定します。
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
オブジェクトを含めます。
参考
mlreportgen.dom.Table
| mlreportgen.dom.TableRow
| mlreportgen.dom.TableEntry
| mlreportgen.dom.FormalTable
| mlreportgen.dom.MATLABTable
| mlreportgen.report.BaseTable
| mlreportgen.dom.TableHeaderEntry
| mlreportgen.dom.TableColSpecGroup
| mlreportgen.dom.TableColSpec