技术文章和通讯

与MATLAB报告生成器生成定制的报告

托马斯•甲板,MathWorks


报告需要在几乎所有的工程领域,要么文档系统,满足需求,或生产构件进行认证。手动创建报告对于大型、复杂系统可以是困难和耗时。面临的挑战是复合报表时必须遵循一个特定企业布局或使用特殊的格式。

用MATLAB报告生成器™可以快速生成一个模板化。另外还有与DOM API1您可以为任何类型的应用程序生成一个定制报告在微软®词,幻灯片®、PDF或HTML。

使用Microsoft Word文档作为一个例子,本文解释了如何使用DOM API生成一个简单的报告和一个更复杂的和定制的。

在这个例子中可供使用的代码下载

创建一个模板

使用DOM API生成报告,我们首先创建一个模板文件。模板包括固定内容,如页眉或页脚,——文档的一部分,由MATLAB动态®函数。

在这个例子中,我们从一个字模板开始。创建模板,我们导航到SimpleReport在本文提供的下载文件目录并执行脚本copyTemplate。脚本空模板从MATLAB安装文件夹复制到当前文件夹重命名它myTemplate.dotx。我们打开文件myTemplate.dotx在字(词)。

提示:有时单词将打开文件,但显示“document1”而不是在其标题栏模板的名字。在这种情况下,你将无法保存更改你的模板。为了避免这个问题,打开模板通过调用Word / N参数从命令行或脚本“openTemplate2013”。

一旦文档打开了,我们去开发人员选项卡并选择设计模式。开发人员选项卡在默认情况下是禁用的。要启用它,我们做以下:

  1. 单击“文件”选项卡,选择Options-Customize丝带。
  2. 选择主要的标签和开发人员复选框。

设计模式可以帮助我们区分孔和固定孔通过强调的内容。

我们添加一个新的孔定位光标应该创建洞和紧迫的富文本内容控制按钮(“Aa”)。按下按钮来修改孔的属性(图1)。不需要输入文本进洞里,但添加文本说明模板孔的目的将更易于理解。本文将不会出现在最终的报告中。

Generating_Custom_figure1_w.jpg
图1所示。在字(词)2013年开业报告模板。开发人员选项卡是活跃的,和设计模式,控制富文本内容,突出显示属性。

我们打开窗户内容控制属性指定一个标题和一个标签(这些必须是相同的)。我们关闭对话框,保存并关闭模板。

填充的洞

我们执行MATLABfillFirstHole函数来生成一个新的文件。

函数fillFirstHole %这个函数在myTemplate firstHole填补了洞。dotx进口mlreportgen.dom。*;医生=文档(“firstDocument”、“多克斯”,“myTemplate”);holeId = moveToNextHole (doc);流(当前洞ID: %年代\ n, holeId);textObj =文本(“Hello World”);追加(医生,textObj);关闭(doc);rptview (“firstDocument”、“多克斯”);结束

firstDocument,新文档类型多克斯和基于myTemplate (. dotx)。我们指示DOM API将第一个洞,然后创建一个对象类的文本,其中包含字符串“Hello World。“我们将这个对象附加到文件,关闭文档,并打开firstDocument。多克斯。

提示:如果你收到一个运行时错误消息fillFirstHole功能,确保myTemplate。dotx firstDocument。多克斯都关门了。

块级元素和内联洞

在Microsoft Word,我们可以创建两种类型的孔:内联块级(图2),内联洞出现在一个段落,而只能接受内容,可以发生在一个段落,如文本、图像、超链接。一个块级洞可以包含任何类型的内容,包括其他段落。

Generating_Custom_figure2_w.jpg
图2。词接口用于创建内联块级洞。

创建内联洞,把光标在你的模板和按富文本内容控制按钮。马克空段和块级孔按下按钮。

提示:将内联洞正前方的一个段落,在段落前添加一个空格,否则的话可能会创建一个块级洞。您可以删除空间。

添加样式

现在我们想修改生成文本的方式显示在我们的报告。在前面的步骤中,我们添加一个文本文档对象。我们有几个选项修改文本对象的外观。

函数fillFirstHoleWithStyle %这个函数在myTemplate firstHole填补了洞。dotx进口mlreportgen.dom。*;医生=文档(“firstDocument”、“多克斯”,“myTemplate”);holeId = moveToNextHole (doc);流(当前洞ID: %年代\ n, holeId);textObj =文本(“Hello World”,“标题1”);textObj。大胆= true;追加(医生,textObj);关闭(doc);rptview (“firstDocument”、“多克斯”); end

您可以修改个人属性,如粗体或颜色,或使用StyleName属性属性定义外观。的StyleName属性属性词风格适用于对象,这意味着对象的外观是由模板中定义的样式。

如果没有StyleName属性提供,风格继承了段落模板中。

定制你的报告在字(词)的外观,您可以创建自己的风格定义或使用内置的样式。

DOM API只能使用在您的模板中定义的样式。常用的样式都内置模板提供。将不同的内置风格复制到模板,应用新风格虚拟文本然后删除文本。

我们不推荐修改或应用单词的内置样式模板。的内部名称内置的样式,您必须使用你的报告功能,可以不同于那些在字(词)。使用文字编辑器来创建一个新的样式基于内置的样式和使用新样式的名字在你的报告功能。图3显示了如何设置字显示使用样式。

Generating_Custom_figure3_w.jpg
图3。词风格选项面板中设置只显示使用样式。

决定是否在词或定义或修改样式控制DOM API的外观取决于任务:如果你经常使用一个特定的格式或模式,考虑定义一个词的风格。注意这个词给你设置表格和列表样式的选项。如果你只需要修改一个文档的特定部分,它可能是更有效的控制外观与MATLAB函数。

提示:所有的风格都是基于词的正常的风格。如果您修改或使用这种风格,你限制你的定制选项。例如,修改它的字体将阻止你表样式中使用不同的字体。

生成一个先进的报告

广泛的类库的DOM API使您能够将许多不同种类的对象添加到您的报告,如文本、图像、链接和表。在你开始创建一个报告包含多个对象,定义一个接口之间的函数创建报告和获得你的报告中显示的数据的功能。

最简单的方法是每个结构的名称字段对应一个洞的名字。所需的MATLAB函数中的代码可以是一个简单的填补漏洞循环。

添加图片和表

我们开始收集数据的功能getAdvancedReportDataAdvancedReport文件夹中。这个函数定义之间的接口和数据报告。一些元素,如标题、静态文本。其他人,比如作者、依赖于系统的环境变量。两个表充满了一个随机的句子生成的MATLAB函数为什么

接下来,我们根据我们的设计要求和准备好模板孔由我们定义的接口。这些东西已经被定义的AdvancedReportTemplate.dotx:

  • 我们想用的词风格:

    • AR_Heading1-3定制的章节标题(章标题是用于创建表的内容)。
    • AR_Title和AR_SubTitle内联洞在标题页。
    • AR_Image和AR_Caption集中图像和图像标题编号。
    • AR_Normal改写为文本的字体不同。
    • AR_Table修改外观的一个简单的表。
  • 所需的段落样式和漏洞

  • 一个静态头公司的标志和一个空显示页码的页脚

  • 一个表的内容和数据表

  • 骨架结构定义为静态章和分章标题

最后,我们用MATLAB函数创建报告createAdvancedReport。我们处理所有漏洞循环。一个开关之间的循环决定下列情形:

标准洞。在“否则”开关的情况下,这些漏洞获取文本。图示是由词根据应用风格决定。

的形象。在这种情况下我们reportData结构包含一个图像的道路将被添加到报告。在函数processImage的图像对象添加到一个段落样式AR_Image。风格有一个中心对齐,所以图像为中心。图片标题添加与另一款的风格AR_Caption。这种风格提供了自动图编号,并用于创建表的数据。

SimpleTable。在函数processSimpleTable我们创建一个块级完成sub-chapter洞。在添加表之前,我们添加一个新的段落样式AR_Heading2,添加一个新报告2级标题。我们创建一个简单的表,表类。只有表数据和桌风格AR_Table是必要的。表样式在字(词)负责绘图和格式表。

AdvancedTable。processAdvancedTable我们使用另一个块级洞来创建一个新的sub-chapter和另一桌的FormalTable类。这门课让我们从头构建一个完整的表。我们需要添加每一个单元格,但我们有完全控制的外观。为了证明这一点,我们用一个随机颜色填充背景颜色的每一个细胞。

现在我们已经准备好执行createAdvancedReport并产生先进的报告。

在本例中,我们创建了一个简单的基础设施,可以很容易地增强覆盖几乎所有文档的需求。结果文档可用于需求管理或认证,它可以处理为例,它可以存储和存档作为缓解的PDF文件的可移植性,词独立,防止修改。

1DOM(文档对象模型)的API创建一个表示报告在你的系统内存。

关于作者

托马斯甲板是MathWorks公司高级顾问工作在汽车,能源生产,医疗设备,和制造业将生成的代码部署到自定义目标高度集成和验证嵌入式软件C和c++。托马斯是一位运筹学理科信息技术从Baden-Wuerttemberg合作州立大学曼海姆。

2016 - 92989 v00出版

查看相关文章的能力