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

レポーターの新しいタイプの定義

MATLAB® Report Generator™ によって、特定のレポート要件を満たすレポーターのタイプを定義できます。たとえば、MATLAB Report Generator TitlePage レポーター タイプがニーズを満たさない場合、独自のタイトル ページのレポーター タイプを定義できます。

メモ

次の手順では、レポーター タイプを定義するファイルのパッケージを作成します。レポーター定義のパッケージを構築する方法については、TitlePage レポーターなどの組み込みレポーターをサブクラス化します (レポーター定義のサブクラス化を参照)。次の手順を実行した後、新しいレポーター タイプのレポーター パッケージはサブクラス化されたものと同様になります。

新しいレポーター タイプを定義するには、次を行います。

  1. 使用されるレポート プログラムを含むフォルダーにクラス定義のサブフォルダーを作成します。クラス定義フォルダーの名前の接頭辞を @ にします。たとえば、@MyTitlePage です。

    メモ

    他のフォルダーにあるプログラムの新しいクラスを使用するには、MATLAB パスにクラス定義フォルダーを追加します。

  2. クラス定義フォルダーに resources という名前のサブフォルダーを作成します。resources フォルダーに templates という名前のサブフォルダーを作成します。

  3. templates フォルダーに pdfdocx、および html という名前のサブフォルダーを作成します。出力タイプのすべてをサポートしない場合は、サポートするタイプに対してのみフォルダーを作成します。

  4. mlreportgen.dom.Document.createTemplate を使用して、サポートする予定の出力タイプのリソース テンプレート フォルダーそれぞれに default という名前の空のテンプレートを作成します。たとえば、MyTitlePage レポーターの pdf テンプレート フォルダーに空のテンプレートを作成するには、次を入力します。

    cd @MyTitlePage/resources/templates/pdf
    mlreportgen.dom.Document.createTemplate('default','pdf);
    

  5. 空の各テンプレート ファイルを編集して、レポーターが使用するテンプレートを含むテンプレート ライブラリを作成します。レポーターがテンプレートを 1 つだけ使用する場合でも、テンプレート ライブラリを作成しなければなりません。たとえば、MyTitlePage レポーターの場合、TitlePage という名前のテンプレートをレポーターの各テンプレート ドキュメントのテンプレート ライブラリに追加します。PDF、Word、および HTML レポートのテンプレート ドキュメントは、それぞれ default.pdftxdefault.dotx、および default.htmtx です。TitlePage テンプレートで、タイトル ページ固定コンテンツとタイトル ページ レポーターが生成するタイトル ページの動的コンテンツのホールを定義します。メイン テンプレートのスタイル シートのテンプレートで使用されるスタイルを定義します。

  6. MATLAB エディターを使用して、クラス定義フォルダーに新しいレポーター タイプのクラス定義 (classdef) ファイルを作成します。クラス定義ファイルの名前は、新しいレポーター タイプの名前にしなければなりません。たとえば、MyTitlePage.m です。この classdef ファイルは次のように定義しなければなりません。

    • 新しいタイプのレポーターに対する基底クラスとしてのレポーターの基底クラス (mlreportgen.report.Reporter)。

    • ヘッダーとフッターのホールを含む、テンプレートによって定義された各ホールのプロパティ。ホールに対応するプロパティはホールと同じ名前にしなけばなりません。たとえば、レポーターのテンプレートが Title という名前のホールを定義する場合、クラス定義ファイルは Title という名前のプロパティを定義しなければなりません。このコードはクラス定義ファイルの例です。

      classdef MyTitlePage < mlreportgen.report.Reporter
        properties 
          Title = ''
          Author = ''
          Version = '1.0'
        end
      
        methods 
          function obj = MyTitlePage(varargin)
            obj = obj@mlreportgen.report.Reporter(varargin{:});
      %  The next line assumes that you have defined a template 
      %  named TitlePage in the template library of the main
      %  template used by this reporter. The base reporter class
      %  fills the holes in this template with the contents of  the
      %  corresponding properties defined by your class.
            obj.TemplateName = 'MyTitlePage';
          end
        end 
      
        methods (Hidden) 
      % This function is used by the base Reporter class to 
      % retrieve the MyTitlePage reporter template corresponding 
      % to the output type of the report to which the reporter 
      % is added. For example, if you add this reporter to a 
      % Report object whose output type is PDF, the base reporter 
      % class returns the path of the PDF template residing in the
      % resources/templates/pdf directory of your reporter 
      % definition package.
          function templatePath = getDefaultTemplatePath(~,rpt)  
            import mlreportgen.report.*
            path = MyTitlePageTemplate.getClassFolder();
            templatePath = ... 
              ReportForm.getFormTemplatePath(path,rpt.Type); 
          end 
      
        end 
      
        methods (Static)
          function path = getClassFolder()
            [path] = fileparts(mfilename('fullpath')); 
          end 
      
        end  
      
      end
      

メモ

この例では、コンストラクターのプロパティ値のペアを定義しません。プロパティを設定する前にレポーターをインスタンス化します。

この例では、サンプルの classdef ファイルで定義されるタイトル ページ レポーター (MyTitlePage) の使用方法を示します。例では、レポーターのインスタンス作成後、プロパティを設定する方法も示しています。

import mlreportgen.report.*
import mlreportgen.dom.*

rpt = Report('myreport','pdf');

tp = MyTitlePage;
tp.Title = 'My Report';
tp.Author = 'Myself';
add(rpt,tp);

close(rpt);
rptview(rpt);

参考

| | | |

関連するトピック