Main Content

プログラムによるスタイルの定義

この例では、スタイルのセットをプログラムで定義する方法を示します。スタイルは、名前付き書式セットです。スタイルを使用すると、個々の書式をすべて定義する代わりに、スタイル名を指定してレポート要素の外観を定義することができます。スタイルを使用することで、レポート プログラムの作成が簡略化されます。DOM API では、レポート テンプレートで定義したスタイルを使用できます。あるいは、この例に示すように、レポート プログラムでスタイルを定義することもできます。テンプレートを必要としないレポート プログラムを作成する必要がある場合 (または作成したい場合)、レポート プログラムでスタイルを定義することを検討してください。

この例では、一連のテストの結果を要約するテーブルを含むレポートを生成します。例ではテスト データを作成します。実際のアプリケーションでは、入力の 1 つとしてテスト データを受け入れる関数としてレポート プログラムを実装できます。この例で生成されるレポートは次のようになります。

テスト データの作成

テスト データを構造体の配列として作成します。

test(1).Name = "100% Success";
test(1).Description = "Percent of total loss(failing hits) must be==0%";
test(1).Status = "Fail";
test(1).StatusDetail = "Loss=22.33%";

test(2).Name = "No Fail";
test(2).Description = "Fail Count must be ==0";
test(2).Status = "Fail";
test(2).StatusDetail = "Fail Count=69";

test(3).Name = "Fast Hit Rate";
test(3).Description = "Final Throughput must be>=10Hits per second";
test(3).Status = "Pass";
test(3).StatusDetail = "Hits per Second=27.978";

test(4).Name = "Low Execution Time";
test(4).Status = "Pass";
test(4).Description = "Avg. Exe Time(ms) must be <750.0";
test(4).StatusDetail = "Avg Exe Time(ms)=244.33";

DOM API 名前空間のインポート

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

import mlreportgen.dom.*;

ドキュメントの作成

Microsoft® Word ドキュメントを作成するには、出力タイプを pdf から docx に変更します。HTML ドキュメントを作成するには、pdfhtml または html-file に変更します。

d = Document("report","pdf");

スタイル用コンテナーの作成

スタイル シートとして機能するcontainers.Mapオブジェクトを作成します。これは、スタイルに含まれる書式セットにスタイル名をマッピングするオブジェクトです。

styles = containers.Map;

スタイルの定義

この例では、最上位のセクション見出しスタイルのスタイルとサブセクション見出しスタイルを使用します。まず、両方の見出しに共通する外観を定義するスタイルを作成します。

styles("baseHeadingPara") = {Color("darkblue"),FontFamily("Arial")};

最上位のレポート セクション見出しとして機能する段落のスタイルを定義します。このスタイルは、見出しがレポートの目次の最上位エントリとして表示されるように、アウトライン レベル 1 を指定します。

styles("heading1Para") = [styles("baseHeadingPara"),{OutlineLevel(1),Bold,...
                          FontSize("16pt")}];                              

2 番目のレベルの見出しを定義します。

styles("heading2Para") = [styles("baseHeadingPara"),{OutlineLevel(2),...
                          OuterMargin("0in","0in","12pt","5pt"),Italic,FontSize("14pt")}];

テーブル、テーブル ヘッダー、およびテーブル エントリのスタイルを定義します。

styles("testSummaryTable") = {Border("solid"),RowSep("solid"),ColSep("solid"),Width("7in")};                          
styles("testSummaryTableHeader") = {Bold};
styles("testSummaryTableEntry") = {InnerMargin("10pt")};

テスト ステータスのスタイルを定義します。

styles("passText") = {Color("green")};
styles("failText") = {Color("red")};

レポート コンテンツの作成

レポートのタイトルを作成します。

heading1Para = Paragraph("Load Test Information");
heading1Para.Style = styles("heading1Para");
append(d,heading1Para);

テスト概要テーブルの説明タイトルを作成します。

heading2Para = Paragraph("Quality of Service Report Summary");
heading2Para.Style = styles("heading2Para");
append(d,heading2Para);

テスト概要テーブルのヘッダー コンテンツを作成します。テーブル ヘッダーに表示するラベルを定義します。

testSummaryTableHeader = ["Name","Description","Status","Status Detail"];  

テスト概要テーブルのコンテンツを保持する cell 配列を作成します。cell 配列は、後でテーブルを作成するために使用されます。

nTests = numel(test);
testSummaryTableBody = cell(nTests,4);

テスト データの各項目を cell 配列のセルに格納します。

for t = 1:nTests
    testSummaryTableBody{t,1} = test(t).Name;
    testSummaryTableBody{t,2} = test(t).Description;
    result = test(t).Status;
    status = Paragraph(result);
     if result == "Pass"
         status.Style = styles("passText");
     else
         status.Style = styles("failText");
     end
       testSummaryTableBody{t,3} = status;
       testSummaryTableBody{t,4} = test(t).StatusDetail;
end

テスト概要テーブルを作成します。

testSummaryTable = FormalTable(testSummaryTableHeader,testSummaryTableBody);
testSummaryTable.Style = styles("testSummaryTable");
testSummaryTable.Header.Style = styles("testSummaryTableHeader");
testSummaryTable.TableEntriesStyle = styles("testSummaryTableEntry");

テスト概要テーブルをドキュメントに追加します。

append(d,testSummaryTable);

ドキュメントを閉じて表示

close(d);
rptview(d);

参考

| | | | | | | | | |

関連するトピック