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

MATLAB® Report Generator™ позволяет вам задавать пользовательский генератор отчетов на основе mlreportgen.report.Reporter класс или встроенный генератор отчетов API Отчета. Основывайте свой генератор отчетов на встроенном генераторе отчетов, когда встроенный генератор отчетов удовлетворяет большинство ваших требований, и вы хотите перестроить или расширить содержимое генератора отчетов. Смотрите Подкласс Определение Генератора отчетов. Основывайте свой генератор отчетов на mlreportgen.report.Reporter класс, чтобы задать совершенно новый генератор отчетов.

Создать генератор отчетов на основе mlreportgen.report.Reporter, используйте mlreportgen.report.Reporter.customizeReporter метод. Метод создает скелетный файл определения класса и делает копии файлов шаблона по умолчанию для каждого выходного типа отчета.

Завершать пользовательское определение генератора отчетов:

  • В файле шаблона для каждого выходного типа отчета, поддержанного генератором отчетов, задайте фиксированное содержимое и отверстия для динамического контента, который генерирует генератор отчетов.

  • В пользовательском классе генератора отчетов задайте свойства, которые соответствуют отверстиям шаблона.

Чтобы использовать генератор отчетов в отчете API Отчета, создайте объект класса генератора отчетов, установите значения свойств и добавьте объект к отчету.

Создайте файл определения класса и обработайте копии по шаблону

Создайте файл определения класса для пользовательского класса генератора отчетов и сделайте копии шаблонов по умолчанию путем вызова mlreportgen.report.Reporter.customizeReporter метод. Обеспечьте путь и имя класса, который будет создан как входной параметр к методу. Чтобы создать класс генератора отчетов в папке класса, предшествуйте имени класса с @ символ.

Например, этот код создает файл класса MyTitlePage.m в папке под названием @MyTitlePage:

mlreportgen.report.Reporter.customizeReporter("@MyTitlePage")

Файл определения класса MyTitlePage.m содержит:

classdef MyTitlePage < mlreportgen.report.Reporter 

    properties 
    end 

    methods 
        function obj = MyTitlePage(varargin) 
            obj = obj@mlreportgen.report.Reporter(varargin{:}); 
        end 
    end 

    methods (Hidden) 
        function templatePath = getDefaultTemplatePath(~, rpt) 
            path = MyTitlePage.getClassFolder(); 
            templatePath = ... 
                mlreportgen.report.ReportForm.getFormTemplatePath(... 
                path, rpt.Type); 
        end 

    end 

    methods (Static) 
        function path = getClassFolder() 
            [path] = fileparts(mfilename('fullpath')); 
        end 

        function createTemplate(templatePath, type) 
            path = MyTitlePage.getClassFolder(); 
            mlreportgen.report.ReportForm.createFormTemplate(... 
                templatePath, type, path); 
        end 

        function customizeReporter(toClasspath) 
            mlreportgen.report.ReportForm.customizeClass(... 
                toClasspath, "MyTitlePage"); 
        end 

    end  
Класс включает конструктора и скрытый метод getDefaultTemplatePath. Основной класс генератора отчетов использует getDefaultTemplatePath метод, чтобы получить MyTitlePage шаблон генератора отчетов, который соответствует выходному типу отчета, к которому добавляется генератор отчетов. Например, если вы добавляете генератор отчетов в mlreportgen.report.Report возразите, чьим выходным типом является PDF, основной класс генератора отчетов возвращает путь шаблона PDF, который находится в resources/templates/pdf подпапка вашей папки определения генератора отчетов.

mlreportgen.report.Reporter.customizeReporter метод хранит копии файлов шаблона по умолчанию для каждого выходного типа отчета в resources/templates подпапка папки, которая содержит файл определения класса. Пути файлов шаблона относительно resources/templates :

  • docx/default.dotx

  • pdf/default.pdftx

  • html/default.htmt

  • html/default.htmtx

Например, @MyTitlePage папка имеет эту структуру:

@MyTitlePage contains resources, which contains templates. Templates contains html, docx, and pdf, each of which contains the templates files that correspond to the output type.

Задайте фиксированный и динамический контент в шаблонах

Настройте файлы шаблона путем определения фиксированного содержимого и отверстий для динамического контента, который генерирует пользовательский генератор отчетов. Только необходимо настроить файлы шаблона для выходных типов отчета, поддержанных пользовательским генератором отчетов. Например, если генератор отчетов поддерживает только отчеты Word, настройте только dotx обработайте файл по шаблону.

Если пользовательский генератор отчетов требует нескольких шаблонов, сохраните шаблоны в библиотеке шаблонов в файле шаблона. Если генератор отчетов требует только одного шаблона, можно сохранить содержимое шаблона в теле файла шаблона или в шаблоне в библиотеке шаблонов. Например, для MyTitlePage генератор отчетов, который требует только одного шаблона, можно добавить шаблон зафиксированное содержимое и отверстия для динамического контента к телу файла шаблона или к записи под названием MyTitlePage в библиотеке файла шаблона.

Задайте стили, используемые шаблоном в таблице стилей файла шаблона.

Смотрите создают библиотеку шаблонов части документа Microsoft Word, создают библиотеку шаблонов части документа в формате PDF и создают библиотеку шаблонов части документа HTML.

Задайте свойства и задайте шаблон в пользовательском классе генератора отчетов

В пользовательском классе генератора отчетов:

  • Задайте свойство для каждого из отверстий, заданных шаблонами, включая отверстия в заголовках и нижние колонтитулы. Свойство, соответствующее отверстию, должно иметь то же имя как отверстие. Например, если шаблоны генератора отчетов задают отверстие под названием Title, файл определения класса должен задать свойство под названием Title.

  • Если генератор отчетов использует шаблон, сохраненный в библиотеке шаблонов файла шаблона, добавьте линию на конструктора, который устанавливает свойство TemplateName к имени шаблона генератора отчетов. Вы не должны задавать это свойство в файле определения класса, потому что индивидуально настраиваемый класс наследовал это свойство от основного slreportgen.report.Reporter класс.

Например, этот файл определения класса задает Title, Author, и Version свойства и указывают, что именем шаблона является MyTitlePage

classdef MyTitlePage < mlreportgen.report.Reporter 

    properties 
        Title = "";
        Author = "";
        Version = "";
    end 

    methods 
        function obj = MyTitlePage(varargin) 
            obj = obj@mlreportgen.report.Reporter(varargin{:}); 
            obj.TemplateName = "MyTitlePage";
        end 
    end 

    methods (Hidden) 
        function templatePath = getDefaultTemplatePath(~, rpt) 
            path = MyTitlePage.getClassFolder(); 
            templatePath = ... 
                mlreportgen.report.ReportForm.getFormTemplatePath(... 
                path, rpt.Type); 
        end 

    end 

    methods (Static) 
        function path = getClassFolder() 
            [path] = fileparts(mfilename('fullpath')); 
        end 

        function createTemplate(templatePath, type) 
            path = MyTitlePage.getClassFolder(); 
            mlreportgen.report.ReportForm.createFormTemplate(... 
                templatePath, type, path); 
        end 

        function customizeReporter(toClasspath) 
            mlreportgen.report.ReportForm.customizeClass(... 
                toClasspath, "MyTitlePage"); 
        end 

    end  
end

Используйте пользовательский генератор отчетов

Использовать ваш пользовательский генератор отчетов:

  1. Создайте объект класса генератора отчетов.

  2. Установите значения свойств, которые вы задали в классе.

  3. Добавьте объект к отчету.

Например:

import mlreportgen.report.*

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

titlePage = MyTitlePage;
titlePage.Title = "My Report";
titlePage.Author = "Me";
titlePage.Version = "1.0"
append(rpt,titlePage);

close(rpt);
rptview(rpt);

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

| | | |

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте