如何用matlab出word版本的报告? 您所在的位置:网站首页 matlab读取word内容 如何用matlab出word版本的报告?

如何用matlab出word版本的报告?

2023-04-02 12:19| 来源: 网络整理| 查看: 265

因为回答和文章不能同步,最新的版本请参见:

MATALB 的报告自动生成 - 01 - 知乎 (zhihu.com)

MATALB 的报告自动生成 - 02 基于word模板 - 知乎 (zhihu.com)

(PPT的参见:自动报告生成 - PPT - 知乎 (zhihu.com))

-----------------------以下为原回答------

之前在 关于 Simulink 虚拟车辆建模的合集 - 知乎 (zhihu.com) 提到仿真结果后处理的时候,提到“报告生成”,再加上之前也有和 TC 聊到关于报告自动生成的问题。

因此就来聊一下自动报告生成这个话题。

目前 MATLAB Report Generator 直接提供的 API 接口操作包括 PDF, Word,PPT 以及 HTML。实际上因为 MATLAB 自己有 Excel 读写功能,所以理论上也是可以通过基本的读写操作来更新 Excel 的数据

这里主要聊一下 word 格式,关于PPT以后有机会再说。

Simulink Report Generator,简单的说就是针对 Simulink 提供了很多信息获取的 API 以及一些针对 Simulink 的模板,更多的适合于导出 Simulink 模型的说明报告。

自动报告生成简单来说,有三大路径:

纯脚本Word 模板+脚本 (我比较喜欢这种)Report Generator AppReport 01 纯脚本

构造一个报告的步骤,起来很简单:

新建报告文档 -> 使用给定的 API 定义各个报告环节,比如标题 -> 给各个环节的属性赋值,比如标题为“我的报告” -> 将这个环节添加到报告文档 -> 结束。

% 新建一个报告文档 import mlreportgen.report.* import mlreportgen.dom.*; rpt = Report('myReport','pdf'); % 添加报告元素 - 首页 tp = TitlePage; % 给改报告元素赋值 tp.Title = Text("知乎用户统计报告"); tp.Subtitle = Text("之个人账号阅读访问"); tp.Subtitle.Color = "red"; tp.Image = which("Capture.JPG"); tp.Author = "作者:基于模型设计柚子"; tp.Publisher = "发行商:知乎.com"; tp.PubDate = date(); append(rpt,tp) %% Chapter1 章节 chapter = Chapter("简介"); % 1.1 Section 段落 sec1 = Section("这里是第一章第一节?"); para = Paragraph('这里是第一章第一节的内容.'); append(sec1,para) append(chapter,sec1) % 1.2 Section 段落 sec2 = Section("这里是第一章第二节"); para = Paragraph('这里是第一章第二节的内容'); append(sec2,para); append(chapter,sec2) append(rpt,chapter) % 添加到报告文档里去 close(rpt) % 查看报告 rptview(rpt)

就得到了:

a. 报告类型

首先,报告可以选择不同的文件类型,"pdf','html','html-file',''docx'

b. 报告元素

其次,除了 TitlePage 之外,还有其它报告元素可以选择添加。

web(fullfile(docroot, 'rptgen/referencelist.html?type=function&category=title-pages-and-tables-of-contents-1&s_tid=CRUX_topnav'))

TableOfContents:

ListOfFigures

ListOfCaptions

c. 内容元素web(fullfile(docroot, 'rptgen/paragraphs-and-text-strings.html?s_tid=CRUX_lftnav'))

但我本人不是很喜欢完全这种报告生成的方式,纯粹是在用代码来构造 Word。

很多时候,我们需要的是根据我们的仿真结果或者其它,来更新一个报告。

也就是说,报告里有动态和静态的部分。

静态也就是写死的部分,那么打开Word,编辑就是了;而动态,则可以用占位符表示,用代码来更新占位符的部分就行了。动态更新报告模板

举个例子,在下面这个模板文件(后面再说如何定义模板文件)里,黄色的部分是需要动态修改的部分。

这里为了举例,按照黄色块的顺序,分为不同类型:

文字日期数字图片表格

数据更新后,通过代码将特定的结果填入这些占位符,得到如下报告:

1. 模板定义

首先新建一个模板文件:

import mlreportgen.dom.* mlreportgen.dom.Document.createTemplate('TemplateBasedOnHole','docx');

打开这个模板文件TemplateBasedOnHole.docx,然后正常编辑 Word 报告静态内容,利用 Word 自身功能设置章节文本格式。

2. 定义动态占位符

启用 Word 的开发者菜单,准备设置动态部分:

Word打开显示开发工具https://www.zhihu.com/video/1547759357584244736

把需要动态变化的部分,设置为占位符,比如把更新人员名字和更新日期设置为动态部分。

Hole 为占位符固定关键字Author 为自定义关键字

具体操作过程:

https://www.zhihu.com/video/15477713262488002563. 动态更新占位符

可以用以下模式的代码,生成报告。

遍历每一个占位符(标记设置为 Hole),根据刚刚定义占位符时取的标题名字,用append命令来填入对应内容。

import mlreportgen.dom.* rptname = 'FileeholeReport' rpt = Document(rptname,'docx','TemplateBasedOnHole'); author = '基于模型设计柚子'; PubData = date(); % 更新模式 while ~strcmp(rpt.CurrentHoleId,'


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有