主要内容

定义一个新的记者

MATLAB®报告生成器™允许您根据。定义自定义报表mlreportgen.report.Reporter类或内置的Report API报告程序。当内置报表能够满足您的大部分需求,并且您希望重新安排或扩展报表内容时,您可以将报表基于内置报表。看到子类化报告器定义.让你的记者mlreportgen.report.Reporter类定义一个全新的报告器。

创建一个基于mlreportgen.report.Reporter,可以使用mlreportgen.report.Reporter.customizeReporter方法。该方法创建一个骨架类定义文件,并为每个报告输出类型复制默认模板文件。

要完成自定义报表的定义:

  • 在报告人支持的每种报表输出类型的模板文件中,为报告人生成的动态内容定义固定内容和洞。金宝app

  • 在自定义报告器类中,定义与模板孔对应的属性。

要在Report API报表中使用报表,请创建报表类的对象,设置属性值,并将对象附加到报表中。

创建类定义文件和模板副本

为自定义报告器类创建类定义文件,并通过调用mlreportgen.report.Reporter.customizeReporter方法。提供要创建的类的路径和名称作为方法的输入参数。要在类文件夹中创建报告器类,请在类名前面加上的性格。

例如,这段代码创建了一个类文件MyTitlePage.m在名为@MyTitlePage

mlreportgen.report.Reporter.customizeReporter (“@MyTitlePage”

类定义文件MyTitlePage.m包含:

classdefMyTitlePage < mlreportgen.report.Reporter属性结束方法函数obj = MyTitlePage(varargin) obj = obj@mlreportgen.report.Reporter(varargin{:});结束结束方法(隐藏)函数MyTitlePage.getClassFolder(); / / MyTitlePage.getClassFolder();templatePath =...mlreportgen.report.ReportForm.getFormTemplatePath (...路径,rpt.Type);结束结束方法(静态)函数[path] = getClassFolder() [path] = fileparts(' fullpath '));结束函数createTemplate(templatePath, type) path = MyTitlePage.getClassFolder();mlreportgen.report.ReportForm.createFormTemplate (...templatePath、类型、路径);结束函数customizeReporter toClasspath mlreportgen.report.ReportForm.customizeClass (...toClasspath,“MyTitlePage”);结束结束
该类包括构造函数和隐藏方法getDefaultTemplatePath.基报告器类使用getDefaultTemplatePath方法检索MyTitlePage添加报表的报表输出类型对应的报表模板。例如,如果将报告器添加到mlreportgen.report.Report对象的输出类型为PDF时,基报告器类返回驻留在资源/模板/ pdf报表定义文件夹的子文件夹。

mlreportgen.report.Reporter.customizeReporter方法中存储每个报告输出类型的默认模板文件的副本资源/模板包含类定义文件的文件夹的子文件夹。模板文件的相对路径资源/模板是:

  • 多克斯/ default.dotx

  • pdf / default.pdftx

  • html / default.htmt

  • html / default.htmtx

例如,@MyTitlePage文件夹有这样的结构:

@MyTitlePage包含资源,资源包含模板。模板包含html、docx和pdf,每一个都包含对应于输出类型的模板文件。

在模板中定义固定和动态内容

通过为自定义报表生成的动态内容定义固定内容和孔来自定义模板文件。您只需要为自定义报表支持的报表输出类型定制模板文件。金宝app例如,如果记者只支持Word报表,则只需要自定义金宝appdotx模板文件。

如果自定义报表需要多个模板,请将模板库中的模板存储在模板文件中。如果报告器只需要一个模板,您可以将模板内容存储在模板文件的主体中,也可以存储在模板库中的模板中。例如,对于MyTitlePageReporter只需要一个模板,您可以将模板固定内容和动态内容孔添加到模板文件的主体或命名为的条目中MyTitlePage在模板文件库中。

在模板文件的样式表中定义模板使用的样式。

看到创建Microsoft Word文档部件模板库创建PDF文档部件模板库,创建一个HTML文档部件模板库

在自定义报表类中定义属性并指定模板

在自定义报告器类中:

  • 为模板定义的每个孔定义一个属性,包括页眉和页脚中的孔。与洞对应的属性必须与洞的名称相同。例如,如果报告模板定义了一个名为标题,类定义文件必须定义名为标题

  • 如果报告使用模板文件模板库中存储的模板,则在构造函数中添加设置属性的行TemplateName到记者模板的名字。您不必在类定义文件中指定此属性,因为自定义类从基类继承此属性slreportgen.report.Reporter类。

例如,这个类定义文件定义标题作者,版本属性,并指定模板名称MyTitlePage

classdefMyTitlePage < mlreportgen.report.Reporter属性Title ="";作者="";Version =""结束方法函数obj = MyTitlePage(varargin) obj = obj@mlreportgen.report.Reporter(varargin{:});obj。TemplateName =“MyTitlePage”结束结束方法(隐藏)函数MyTitlePage.getClassFolder(); / / MyTitlePage.getClassFolder();templatePath =...mlreportgen.report.ReportForm.getFormTemplatePath (...路径,rpt.Type);结束结束方法(静态)函数[path] = getClassFolder() [path] = fileparts(' fullpath '));结束函数createTemplate(templatePath, type) path = MyTitlePage.getClassFolder();mlreportgen.report.ReportForm.createFormTemplate (...templatePath、类型、路径);结束函数customizeReporter toClasspath mlreportgen.report.ReportForm.customizeClass (...toClasspath,“MyTitlePage”);结束结束结束

使用自定义报表

使用您的自定义记者:

  1. 创建报告器类的对象。

  2. 设置在类中定义的属性的值。

  3. 将对象追加到报告中。

例如:

进口mlreportgen.report。*rpt =报告(“myreport”“pdf”);titlePage = MyTitlePage;titlePage。Title =“我的报告”;titlePage。作者=“我”;titlePage。Version =“1.0”追加(rpt titlePage);关闭(rpt);rptview (rpt);

另请参阅

||||

相关的话题