9

我正在使用MATLAB腳本來調整機器上的控制系統。調諧完成後,我想要一個包含文本(特別是序列號,日期/時間和調諧期間確定的值)和圖表的報告,尤其是傳輸函數。如何使用MATLAB創建包含文本和圖形的報告

你有什麼建議?

無論我使用的解決方案應該與MATLAB編譯器兼容,以便我可以將我的解決方案分發給現場工程師團隊。

理想情況下,報告將是PDF文檔。

MATLAB報告生成器似乎不是正確的產品,因爲它似乎我必須將我的腳本分解成小塊並將它們嵌入到報告模板中。我的腳本包含用戶介入和更改值或拒絕調諧的機會,如果情節看起來不正確,我的直覺是如果代碼從報表生成器運行,這將是困難的。另外,如果代碼結構是由報告模板的要求決定的,我擔心代碼結構和可維護性將會丟失。

如果我的假設是錯誤的,請發表評論。

UPDATE

我現在已經切換到使用MATLAB報表生成與釋放r2016b和它工作得很好我的編譯代碼的用戶。不幸的是,這意味着擁有MATLAB許可證的同事也需要購買Report Generator,以便使用我的工具腳本。

回答

4

由於MATLAB報表生成器的開發經理,我很擔心,這個問題可能會留下有關報表生成器的功能產生錯誤的印象。

一方面,報告生成不需要你打破一個腳本成小碎片,並運行它們的模板內。如果您選擇,您可以這樣做,並且在某些情況下,這是有道理的,但這不是要求。事實上,許多報告生成器應用程序都使用MATLAB腳本或程序與用戶交互,在MATLAB工作區中生成數據,並作爲最後一步從工作區數據生成報告。

此外,由於在R2014b版,MATLAB報告生成器自帶的文件生成API,叫DOM API,允許你嵌入到MATLAB程序文檔生成報表。例如,您可以編程方式創建文檔對象,根據您選擇的輸出類型,添加和格式化文本,段落,表格,圖像,列表和子文檔,並輸出Microsoft Word,HTML或PDF輸出。您甚至可以使用Word或HTML編輯器以編程方式填寫您創建的表單中的空白。

的API在Windows,Linux和Mac平臺上運行,並生成Word和HTML輸出在所有三個,而無需使用的Word。在Windows上,它使用Word下的Word來生成它生成的Word文檔的PDF輸出。

最新版本的MATLAB報告生成器引入了一個PowerPoint API,其功能與DOM API類似。如果您需要在MATLAB應用程序中包含報告生成,請不要根據過去的印象排除MATLAB報告生成器。你可能會對它變得多麼強大感到驚訝。

+0

我現在已經切換到報告生成器,它運作良好。 –

1

您是否考慮過通過ActiveX接口驅動Microsoft Word?我已經在編譯好的Matlab程序中完成了這個工作,它運行良好。查看actxserver()的Matlab幫助:要創建的對象類型爲Word.Application

編輯補充:要獲得數字到文檔中,使用-dmeta參數print()將其保存爲.emf文件,然後將它們添加到像這樣的文件:我覺得你說得對

WordServer.Selection.InlineShapes.AddPicture(fileName); 
+0

感謝您的示例。你如何發現這個詞提供的所有服務? Google沒有幫助。 –

+0

Microsoft網站上有相當多的信息,但很難找到。嘗試尋找'Word Automation'或'VBA Word'。一旦你得到一個Word對象,你可以在Matlab上調用'methods()'來查看它暴露的內容,但那不是一切。 – Max

+0

不幸的是,在最新版本的Word中可用的幫助不再記錄這些內容。我相信O'Reilly書中描述的接口幾乎沒有變化(http://shop.oreilly.com/product/9781565927254.do)除了Word 2010,ActiveDocumentSaveAs()方法已被ActiveDocumentSaveAs2()取代, 。您也可以嘗試錄製宏(從「功能區」選項卡中可以找到該功能的所有設備),然後查看生成的VBA。 – Max

2

報告生成器。

在我看來,最快/最簡單的方法是在html文檔中生成報告。爲此,您只需要數字並編寫一個文本文件,轉換應該是微不足道的。

非常類似的方法是創建一個Latex文件。然後從它創建一個PDF - 但爲此,您需要在部署的機器上安裝乳膠。

最後,您可以在Matlab中使用Java的良好集成。有幾個庫可以使用 - 比如this。但我想知道是否所有的複雜都值得。

3

我已經完成了相當多的工作。你說得對,MATLAB報告生成器通常不是一個好的解決方案。 @Max提出了正確的方法(通過其COM接口自動化Word),但是根據我的經驗,我會添加一些額外的評論和提示。

  1. 請記住,如果您打算使用此解決方案,則取決於您的最終用戶將運行Windows,並在他們的計算機上擁有Office副本。如果您想最終制作PDF報告,那麼需要Office 2010或更高版本。
  2. 我敢打賭,你會發現很容易在Excel而非Word中自動生成報告。鑑於您正在編寫一份來自MATLAB的報告,您可能會在數字表格中想要很多內容,這些內容更容易在Excel中佈局。
  3. 如果你要做到這一點在Word中,最簡單的方法是,首先(沒有MATLAB)創建模板的.doc/.docx文件,其中包含任何普通的文本,這將是對所有報告和空白表格相同任何信息。打開跟蹤更改,並在您將填入信息的每個點插入空註釋。然後在MATLAB的報告創建例程中,連接到Word並遍歷每條評論,並用您希望的任何數據替換它。
  4. 如果你正在學習到Excel從MATLAB,this page通過Excel文檔互操作自動化是真的很有幫助。 Word有一個等值的。
  5. 不像@Max,我從來沒有通過保存數據到一個.EMF文件,然後將它們都有不錯的效果。在理論上確實保留了可編輯性,但我從來沒有發現這種有價值的東西。相反,獲得MATLAB圖中尋找正確的(和正確的大小),然後將其與print(figHandle, 'dbitmap')複製到剪貼板並粘貼到Excel與Worksheet.Range('A1').PasteSpecial
  6. 保存爲PDF格式,請使用Workbook.ExportAsFixedFormat('xlTypePDF', pathToOutputFile)

希望有所幫助!

+0

從.emf文件插入圖形時的實際行爲因使用的Matlab和/或Word版本而異。幾年前,我曾經比我現在得到更好的結果。然而,它仍然有效,所以如果它沒有損壞... – Max

相關問題