MATALB 的報告自動生成 - 01 - 本站 (zhihu.com)

MATALB 的報告自動生成 - 02 基于word模板 - 本站 (zhihu.com)

(PPT的參見:自動報告生成 - P" />

国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

15158846557 在線咨詢 在線咨詢
15158846557 在線咨詢
所在位置: 首頁 > 營銷資訊 > 網(wǎng)站運營 > 如何用matlab出word版本的報告?

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

時間:2023-10-29 03:42:01 | 來源:網(wǎng)站運營

時間:2023-10-29 03:42:01 來源:網(wǎng)站運營

如何用matlab出word版本的報告?:因為回答和文章不能同步,最新的版本請參見:

MATALB 的報告自動生成 - 01 - 本站 (zhihu.com)

MATALB 的報告自動生成 - 02 基于word模板 - 本站 (zhihu.com)

(PPT的參見:自動報告生成 - PPT - 本站 (zhihu.com))

-----------------------以下為原回答------




之前在 關(guān)于 Simulink 虛擬車輛建模的合集 - 本站 (zhihu.com) 提到仿真結(jié)果后處理的時候,提到“報告生成”,再加上之前也有和 TC 聊到關(guān)于報告自動生成的問題。

因此就來聊一下自動報告生成這個話題。

目前 MATLAB Report Generator 直接提供的 API 接口操作包括 PDF, Word,PPT 以及 HTML。實際上因為 MATLAB 自己有 Excel 讀寫功能,所以理論上也是可以通過基本的讀寫操作來更新 Excel 的數(shù)據(jù)。

這里主要聊一下 word 格式,關(guān)于PPT以后有機會再說。

Simulink Report Generator,簡單的說就是針對 Simulink 提供了很多信息獲取的 API 以及一些針對 Simulink 的模板,更多的適合于導出 Simulink 模型的說明報告。

自動報告生成簡單來說,有三大路徑:

Report 01 純腳本

構(gòu)造一個報告的步驟,起來很簡單:

新建報告文檔 -> 使用給定的 API 定義各個報告環(huán)節(jié),比如標題 -> 給各個環(huán)節(jié)的屬性賦值,比如標題為“我的報告” -> 將這個環(huán)節(jié)添加到報告文檔 -> 結(jié)束。

% 新建一個報告文檔import mlreportgen.report.*import mlreportgen.dom.*;rpt = Report('myReport','pdf');% 添加報告元素 - 首頁tp = TitlePage;% 給改報告元素賦值tp.Title = Text("本站用戶統(tǒng)計報告"); tp.Subtitle = Text("之個人賬號閱讀訪問"); tp.Subtitle.Color = "red"; tp.Image = which("Capture.JPG"); tp.Author = "作者:基于模型設(shè)計柚子"; tp.Publisher = "發(fā)行商:本站.com"; tp.PubDate = date();append(rpt,tp)%% Chapter1 章節(jié)chapter = Chapter("簡介"); % 1.1 Section 段落 sec1 = Section("這里是第一章第一節(jié)?"); para = Paragraph('這里是第一章第一節(jié)的內(nèi)容.'); append(sec1,para) append(chapter,sec1) % 1.2 Section 段落 sec2 = Section("這里是第一章第二節(jié)"); para = Paragraph('這里是第一章第二節(jié)的內(nèi)容'); 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. 內(nèi)容元素

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


但我本人不是很喜歡完全這種報告生成的方式,純粹是在用代碼來構(gòu)造 Word。

很多時候,我們需要的是根據(jù)我們的仿真結(jié)果或者其它,來更新一個報告。

也就是說,報告里有動態(tài)和靜態(tài)的部分。

動態(tài)更新報告模板

舉個例子,在下面這個模板文件(后面再說如何定義模板文件)里,黃色的部分是需要動態(tài)修改的部分。

這里為了舉例,按照黃色塊的順序,分為不同類型:

  1. 文字
  2. 日期
  3. 數(shù)字
  4. 圖片
  5. 表格
數(shù)據(jù)更新后,通過代碼將特定的結(jié)果填入這些占位符,得到如下報告:




1. 模板定義

首先新建一個模板文件:

import mlreportgen.dom.*mlreportgen.dom.Document.createTemplate('TemplateBasedOnHole','docx');打開這個模板文件TemplateBasedOnHole.docx,然后正常編輯 Word 報告靜態(tài)內(nèi)容,利用 Word 自身功能設(shè)置章節(jié)文本格式。




2. 定義動態(tài)占位符

啟用 Word 的開發(fā)者菜單,準備設(shè)置動態(tài)部分:

Word打開顯示開發(fā)工具https://www.zhihu.com/video/1547759357584244736把需要動態(tài)變化的部分,設(shè)置為占位符,比如把更新人員名字和更新日期設(shè)置為動態(tài)部分。

具體操作過程:

https://www.zhihu.com/video/1547771326248800256

3. 動態(tài)更新占位符

可以用以下模式的代碼,生成報告。

遍歷每一個占位符(標記設(shè)置為 Hole),根據(jù)剛剛定義占位符時取的標題名字,用append命令來填入對應內(nèi)容。

import mlreportgen.dom.*rptname = 'FileeholeReport'rpt = Document(rptname,'docx','TemplateBasedOnHole');author = '基于模型設(shè)計柚子';PubData = date();% 更新模式while ~strcmp(rpt.CurrentHoleId,'#end#') switch rpt.CurrentHoleId case 'Author' append(rpt,author); case 'PubDate' append(rpt,PubData); end moveToNextHole(rpt);end close(rpt);rptview(rpt)所以這個報告生成的邏輯,就這么簡單,其它的不外乎添加不同的元素。

4. 表格和圖片

用類似的方式再建立更多的占位符。

對應的說明參見代碼段。

import mlreportgen.dom.*rptname = 'FileeholeReport'rpt = Document(rptname,'docx','TemplateBasedOnHole');author = '基于模型設(shè)計柚子';PubData = date();% 表格 % headerLabels = ["日期","閱讀","播放","點贊"];tableData = readtable('日報表.xls','ReadVariableNames',true);% 從 excel文件讀入表格% 下面這一行純粹是因為讀入的時候中文顯示不對,手動改的。% 如果讀入的表格標題欄顯示正常,則不需要下面這一行% 理論上說,表格最好不要用中文名tableData.Properties.VariableNames = ["日期","閱讀","播放","點贊","喜歡","評論","收藏","分享"];% 文字 - 總閱讀數(shù),數(shù)字number 轉(zhuǎn)文字stringcount1 = num2str(sum(tableData{:,2}));% 圖片 plot1fig = figure% 如果用了中文名的話,表格按列名取數(shù)據(jù)的時候,加上小括號plot(tableData.('日期'),tableData.('閱讀'));exportgraphics(fig,'barchart.jpg');% 把 plot 轉(zhuǎn)存為圖片,jpg是隨便選的,可以選擇其它合適的圖片格式。plot1 = Image('barchart.jpg');plot1.Style = [plot1.Style {ScaleToFit}]; % 其實代碼也可以定義這些元素的格式。% 表格 table1tableData2Publish = tableData;tableData2Publish.('日期') = char(tableData2Publish.('日期'));% 這里轉(zhuǎn)為tableData2Publish純粹是為了把讀入的datatime數(shù)據(jù)類型轉(zhuǎn)換為文本table1 = FormalTable(tableData2Publish);table1.StyleName = 'myTableStyle'; % 這里的表格形式不用代碼來定義,而是直接選擇 Word 模板里定義好的格式。myTableStyle的定義見后面的視頻。table1.Style = [table1.Style,{ResizeToFitContents(true),Width('6in')}, ... {HAlign('center')}]; % 表格居中顯示% 圖片 plot2fig = figureplot(tableData.('日期'),tableData.('播放'));exportgraphics(fig,'barchart.jpg')plot2 = Image('barchart.jpg');plot2.Style = [plot2.Style {ScaleToFit}];while ~strcmp(rpt.CurrentHoleId,'#end#') switch rpt.CurrentHoleId case 'Author' append(rpt,author); case 'PubDate' append(rpt,PubData); case 'TotalReading' append(rpt,count1); case 'Plot1' append(rpt,plot1); case 'Table1' append(rpt,table1); case 'Plot2' append(rpt,plot2); end moveToNextHole(rpt);endclose(rpt);rptview(rpt)

5. Word 里的表格格式設(shè)計

隨便在word里插入一個表格,調(diào)出 表設(shè)計 菜單,將一個表格設(shè)計方案命名為 myTableStyle。

操作過程:

https://www.zhihu.com/video/1547771473884028928


一般來說,報告就包括以上內(nèi)容了,大部分的 word 類型的報告都可以處理。

區(qū)別可能就在于特殊的排版格式之類,使用這種占位符的方式來生成報告,用 Word 自帶功能來處理更多格式的問題,會使得報告生成的代碼簡單得多。

不過以上內(nèi)容其實沒有用腳本循環(huán)的方式來遍歷各個章節(jié),不過這個是和編程手段相關(guān),和報告生成本身的功能關(guān)系不大了。




6. 其它元素

其它元素可以在幫助文檔搜索 Content Generation 。

Report 02 App

除了純腳本之外,還提供了一個App。我個人最喜歡上面的方式,所以這個 App,感興趣的可以自己去研究下,這里僅當提供個信息。

簡答說來,就是用樹狀圖來表示要生成的報告模板(可以嵌套循環(huán)),元素直接從右側(cè)庫里拖入。然后選擇不同的報告文件格式,生成報告。

Live Editor

從某種意義上說,Live Editor 能導出word和PDF,HTML,方便把腳本、說明文字,圖片、公式、超鏈接、各種控件、數(shù)據(jù)處理 App都放在一起,也算是能生成報告了。

在特定的場景下,也挺方便的,所見即所得。


最后,PPT 其實也有類似的方式來自動生成,也很簡單

以后有機會再說。



關(guān)鍵詞:版本,報告

74
73
25
news

版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點擊下載Chrome瀏覽器
關(guān)閉