账号:
密码:
CTIMES / 文章 /   
利用MATLAB报告产生器自动产生客制化报告
 

【作者: Thomas Deck】2018年03月15日 星期四

浏览人次:【7751】
  


制作报告几??是每一种工程领域的必备工作,目的可以是为了要记录系统、确认设计符合需求与否、或者产生认证文件等等。若要以手动的方式产生庞大、复杂系统的报告则相当困难且耗时;而当报告必须依循特定的企业布局或者使用特殊的格式时,挑战程度就又更高了。


透过MATLAB报告产生器,则可以快速地产生出一个报告范本再透过DOM API(注1),就能够以Microsoft Word、PowerPoint、PDF或HTML为各种类型的应用产生量身订作的报告。


本文将以Microsoft Word文件为例,说明如何利用DOM API来产生简单版的报告以及更复杂的客制化报告。


建立一个范本

使用DOM API产生报告的第一步,我们先建立一个文件范本。范本包含了固定内容,像是页首或页尾,与将以MATLAB函数动态地填入的预留区域(holes)。


在这个范例,我们从Word范本开始。为了建立范本,我们到上述连结提供的下载档案中的SimpleReport目录,并执行copyTemplate脚本。这个脚本从MATLAB安装资料夹复制了一个空的范本到我们所在的资料夹,并且将范本重新命名为myTemplate.dotx。接下来,我们从Word打开myTemplate.dotx档案。


提醒:有时Word把档案打开後标题列会显示”文件1”,而不是范本的名称,这种情况下无法储存你对范本进行的变更。如果从Windows命令行以/N叁数开启Word应用程式或”openTemplate2013”脚本来呼叫Word打开范本就可以避免这样的问题。


打开文件之後,我们前往开发人员(Developer)页签并选择设计模式。开发人员页签是被预设为停用的。透过以下步骤可以启用该页签:


1.点选档案页签後,选择”选项”,并点选自订功能区。


2.从画面上自订功能区的下拉式选单选取”主要索引标签”,再将”开发人员”旁的方框打勾。


设计模式可把预留区域标示出来,帮助我们区别固定内容与预留区域。


我们在新增一个新的预留区域时,先用游标定出要建立预留区域的位置,并点选RTF内容控制按钮(“Aa”图示处)。按下属性按钮可以变更预留区域的属性(图1)。这里虽然还不需要在预留区域里面输入文字,不过如果加入文字来注记预留区域的目的,可以让范本更容易理解。这些文字内容不会显示於最终报告上。



图1 : 在Word 2013开启的报告范本。开发人员页签已启用,红色方框标示处为设计模式、RTF内容控制选项、与属性。
图1 : 在Word 2013开启的报告范本。开发人员页签已启用,红色方框标示处为设计模式、RTF内容控制选项、与属性。

我们开启内容控制属性视窗来指定标题与页签(这两者必须一致)。接下来,我们关闭对话框,储存并关闭范本。


把内容填入预留区块

开启MATLAB,执行fillFirstHole函式来产生一个新的文件。


新文件firstDocument是一种以myTemplate(.dotx)为依据的docx档案。我们指示DOM API移动到第一个预留区域,接着建立一个Text种类的物件,其中包含"Hello World”文字。我们把这项物件附加到文件里面,然後关闭文件,再打开firstDocument.docx来检视。


提醒:如果执行fillFirstHole函式的时候出现错误讯息,先确认一下myTemplate.dotx和firstDocument.docx两个档案是否都关闭了。


区块层级与进线预留区域

我们可以在Microsoft Word建立两种类型的预留区域:进线(inline)与区块层级(block-level)(图2)。进线型预留区域会出现在段落中,它只能接受能够存在於段落之中的内容,比如文字、图片、与超连结。区块层级的预留区域则可以容纳各种类型的内容,甚至是其他段落。



图2 : Word建立进线与区块层级的介面
图2 : Word建立进线与区块层级的介面

要建立一个进线预留区域时,先把游标移到范本的任何一个位置,接着点选RTF内容控制按钮。建立区块层级的预留区域时则是先标出空白段落之後再点选按钮。


提醒:如果要把进线预留区域直接放在一个段落之前,必须在段落之前加上一个空格,否则Word可能会建立成区块层级预留区域。你可以在预留区域建立好之後再清除空格。


加上不同样式

现在来改变一下报告上的文字字型。在前面的步骤,我们附加了一个文字物件到文件里。我们有几种改变文字物件外观的选择。


你可以改变个别的文字属性,像是粗体字、字体颜色,或利用StyleName 属性来定义外观。StyleName 属性可以把Word样式套用到物件,也就是说物件的外观是由你在范本定义的样式来决定。


如果没有指定StyleName ,可以直接沿用范本内段落的样式。


如果你想要自订Word报告外观,则可以建立自己的样式定义或使用内建的样式。


DOM API只能使用范本内定义的样式。常用的样式已经建入提供的范本。如果要把不同的内建样式复制到范本,可以把新的样式先套用到一段暂时建立的文字,之後再把文字删除。


我们不建议改变或套用Word内建样式到你的范本。原因是,你的报告函式必须使用内建样式的内部名称,这些名称可能跟在Word里的名称不同。建议改为使用Word编辑器来依据内建样式建立出新的样式,再使用新样式在报告函式里面的名称。图3说明了如何设置Word来显示使用中的样式。



图3 : 只显示使用中样式的Word样式选项视窗格设定。
图3 : 只显示使用中样式的Word样式选项视窗格设定。

要定义或改变一个Word内样式,还是要透过DOM API来控制外观是依据任务来决定:如果你经常使用一个特定的格式或图案,可以考虑定义一个Word样式。Word也有提供设定表格及清单的样式的选项。如果你只需要改变文件中特定的一小段,可能透过MATLAB函式来控制外观会更方便。


产生更进阶的报告

提醒:所有的样式都是依据Word正常样式。如果改变或使用这种样式,将会限制了你的自订选项。举例来说,改变字体会让你无法在表格样式使用不同的字体。



DOM API广泛的类别函式库藏让你可以在报告中加入许多不同种类的物件,像是文字、图片、连结、与表格。在开始建立包含多个物件的报告之前,要先定义一个建立报告的函式与收集显示在报告中之资料的函式之间的介面。


让每一个结构的栏位名称与预留区域都有一致的名称是最简单的方法。如此一来,要被填充进预留区域的物件在MATLAB函式里的程式码就会是一个简单的while-??圈。


加入图片与表格

我们从AdvancedReport资料夹内getAdvancedReportData函式搜集资料开始。这个函式定义了报告与资料之间的介面。有些元件是静态的文字,例如标题。其他则视系统的环境变数而定,像是作者资料等。两个表格都被填入以MATLAB why函式随机产生的句子。


接下来,我们依据我们的设计要求准备范本以及由介面定义的预留区域。这些项目都已经定义在AdvancedReportTemplate.dotx:


· 我们想要使用的Word样式:


- AR_Heading 1-3使用在自订章节标题(章节标题被用来建立目录)。


- AR_Title与AR_SubTitle用於封面的进线预留区域


- AR_Image与AR_Caption用在中心图片与经过编号的图片标题。


- AR_Normal用於字型与正常样式不同的文字。


- AR_Table使用在改变过外观的简易表格。


· 期??的段落与预留区域样式


· 上面有公司标志的静态页首和有标示页码的页尾


· 内容目录与图表目录


· 由静态章节与子章节标题定义的大纲架构


最後,我们以MATLAB函式createAdvancedReport来建立报告。我们在一个while??圈处理所有预留区域。切换??圈会从以下几种情况做出决定。


“标准”预留区域在”其他”的切换情形,这些预留区域只会取得被分派到的文字。图形表示是由Word依据套用的样式来决定。


图片在这种情况,我们的reportData架构包含了要加入至报告的图片路径。在processImage 函式,图片物件被加入至一个样式为AR_Image的段落。这个样式为置中对齐,因此图片也会被置中。图片的标题会以另一个样式为AR_Caption的段落表示。该样式可让数字自动编号,被用来建立图表目录。


简易表格在processSimpleTable函式,我们在区块层级的预留区域建立一个完整的子章节。在加入表格之前,我们附加一个套用了AR_Heading2的新段落,来把新的第二层标题加进报告。我们也建立一个带有表格类别(Table-class)的简易表格。这里只需要表格资料与表格样式AR_Table。Word里的表格样式会负责绘制与设定表格格式。


进阶表格在processAdvancedTable,我们使用另一个区块层级预留区域来建立一个新的子章节及另一个表格这次使用的是FormalTable类别。这个类别让我们可以建立一个完整的手绘表格。我们需要把每一个表格单元加进来,但我们可以完全掌控表格的外观。为了展示这一点,我们把每个单元格随机加上背景颜色。


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


在这个范例,我们建立了一个简易的架构,之後也可以很轻松地对这个架构作加强,使它可以涵盖几??是所有的文件要求。所产生的文件可以用来进行要求管理或认证,也可以再做更进一步的处理例如储存或封存为PDF档以方便携带、保留文字独立性,及避免内容被更改。


(本文作者Thomas Deck任职於MathWorks公司)


注1:DOM(文件物件模型, document object model)API可在你的系统记忆体建立一个代表性报告。


相关文章
BMW利用机器学习检测汽车的过度转向
跨出影像分类:更多关於深度学习应用
如何透过Simulink进行ISO 26262专案
工程软体开发:敏捷与模型化基础设计
利用模型化基础设计将通讯协定布署至FPGA
comments powered by Disqus
相关讨论
  相关新品
EM500EV 测试/开发板
原厂/品牌:集博
供应商:集博
產品類別:IDE
  相关新闻
» 趋势科技率先利用 AWS Transit Gateway 提供高效能在线式网路资安防护
» Autodesk 2020新品发表暨新知论坛 共享各领域知识及资讯
» 产业链整合加乘科技趋势添翼 台湾国际医疗展及医材展抢商机
» 最新ANSYS版本加速跨产业数位转型 强化设计、工程和制造间的数位设计流程
» AI vs.医学影像辨识 南台湾精准医疗时代掀序幕
  相关产品
» TYAN发布伺服器及主机板支援第二代Intel Xeon
» 意法半导体推出采用Linux发行版的STM32MP1微处理器
» NVIDIA宣布推出Jetson Nano系可运行所有AI模组的CUDA-X AI电脑
» 德承推出DC-1200:采用Intel Pentium N4200的紧凑型无风扇电脑
» 大联大品隹集团推出240W电竞笔记型电脑变压器解决方案

AD


刊登廣告 新聞信箱 读者信箱 著作權聲明 隱私權聲明 本站介紹

Copyright ©1999-2019 远播信息股份有限公司版权所有 Powered by O3
地址:台北市中山北路三段29号11楼 / 电话 (02)2585-5526 / E-Mail: webmaster@ctimes.com.tw