Задайте новые типы генераторов отчетов

MATLAB® Report Generator™ позволяет вам задавать типы генератора отчетов, чтобы выполнить специализированным требованиям к отчетности. Например, если MATLAB Report Generator, тип генератора отчетов TitlePage не удовлетворяет ваши потребности, можно задать собственный тип генератора отчетов титульного листа.

Примечание

Следующая процедура создает пакет файлов, которые задают ваш тип генератора отчетов. Чтобы видеть, как пакеты определения генератора отчетов структурированы, разделяют на подклассы встроенный генератор отчетов, такой как генератор отчетов TitlePage (см. Подкласс Определение Генератора отчетов). После выполнения следующих шагов пакет генератора отчетов для вашего нового типа генератора отчетов будет подобен разделенному на подклассы.

Задавать новый тип генератора отчетов:

  1. Создайте подпапку для своего определения класса в папке, содержащей программу отчета, в которой это должно использоваться. Снабдите префиксом имя папки определения класса с @, например, @MyTitlePage.

    Примечание

    Чтобы использовать новый класс в программах, которые находятся в других папках, добавьте папку определения класса в путь MATLAB.

  2. Создайте подпапку под названием resources в вашей папке определения класса. Создайте подпапку под названием templates в папке resources.

  3. Создайте подпапки под названием pdf, docx и html в папке templates. Если вы не хотите поддерживать все выходные типы, создавать папки только для типов, вы хотите поддержать.

  4. Используйте mlreportgen.dom.Document.createTemplate, чтобы создать пустой шаблон под названием default в каждой из папок шаблона ресурса для выходных типов, которые вы намереваетесь поддержать. Например, чтобы создать пустой шаблон в папке шаблона pdf для вашего генератора отчетов MyTitlePage, введите:

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

  5. Отредактируйте каждый пустой файл шаблона, чтобы создать библиотеку шаблонов, которая содержит шаблоны, которые будут использоваться вашим генератором отчетов. Необходимо создать библиотеку шаблонов, даже если генератор отчетов использует только один шаблон. Например, для вашего генератора отчетов MyTitlePage, добавьте шаблон под названием TitlePage к библиотеке шаблонов в каждом из документов шаблона генератора отчетов. Документами шаблона для PDF, Word и отчетами HTML является default.pdftx, default.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
      

Примечание

Этот пример не задает пары значения свойства в своем конструкторе. Инстанцируйте генератора отчетов, прежде чем вы установите его свойства.

Этот пример показывает, как использовать ваш генератор отчетов титульного листа (MyTitlePage), который задан в выборке classdef файл. Пример также показывает, как установить свойства после создания экземпляра генератора отчетов.

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);

Смотрите также

| | | |

Похожие темы