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
папка имеет эту структуру:
Настройте файлы шаблона путем определения фиксированного содержимого и отверстий для динамического контента, который генерирует пользовательский генератор отчетов. Только необходимо настроить файлы шаблона для выходных типов отчета, поддержанных пользовательским генератором отчетов. Например, если генератор отчетов поддерживает только отчеты 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
Использовать ваш пользовательский генератор отчетов:
Создайте объект класса генератора отчетов.
Установите значения свойств, которые вы задали в классе.
Добавьте объект к отчету.
Например:
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);
mlreportgen.report.TitlePage
| mlreportgen.report.Report
| mlreportgen.report.TableOfContents
| mlreportgen.dom.Text
| mlreportgen.dom.Document