




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
利用MATLAB生成Word和Excel文檔天津科技大學數學系謝中華E-mail:xiezhh@5/25/2021我的新書感謝趙社長和陳守平編輯!感謝rocwoods(吳鵬)!感謝math!感謝各位版友的捧場!5/25/2021本次報告的提綱※組件對象模型(COM)※MATLAB中的ActiveX控件接口技術※利用MATLAB生成Word文檔※利用MATLAB生成Excel文檔5/25/2021第一節組件對象模型(COM)5/25/2021
組件對象模型(ComponentObjectModel,簡稱COM),它是微軟公司為了使軟件開發更加符合人類的行為方式而提出的一種規范。在這種規范下,單個應用程序被分隔成多個獨立的部分,也即組件(Component),這種做法的好處是可以隨著技術的發展而用新的組件取代已有的組件,此時的應用程序不再是一個一出生就命中注定要過時的靜態程序,而是隨時可以用新組件取代舊組件而返老還童的動態程序。一、什么是COM5/25/2021接口查詢生存期控制二、COM接口1.IUnknown接口2.IDispatch接口
IDispatch接口接收一個函數名并執行它5/25/2021第二節MATLAB中的ActiveX控件接口技術一、actxcontrol函數
h=actxcontrol('progid')h=actxcontrol('progid','param1',value1,…)h=actxcontrol('progid',position)h=actxcontrol('progid',position,fig_handle)h=actxcontrol('progid',position,fig_handle,event_handler)h=actxcontrol('progid',position,fig_handle,event_handler,'filename')【例1】創建日歷控件%新建一個圖形窗口,指定圖形窗口大小,返回圖形窗口句柄f>>f=figure('position',[360278535410]);%在新建的圖形窗口中創建一個日歷控件,并設置控件的大小>>cal=actxcontrol('mscal.calendar',[00535410],f)cal= COM.mscal_calendar5/25/2021>>eventhandle=@(varargin)disp('祝大家身體健康!');>>f=figure('position',[360,278,535,410]);>>cal=actxcontrol('mscal.calendar',[0,0,535,410],f,eventhandle);5/25/2021二、actxcontrollist函數查看系統上當前安裝的所有COM控件>>C=actxcontrollist%查看系統上當前安裝的所有COM控件5/25/2021三、actxcontrolselect函數
h=actxcontrolselect[h,info]=actxcontrolselect5/25/2021四、actxserver函數
h=actxserver('progid')h=actxserver('progid','machine','machineName')h=actxserver('progid','interface','interfaceName')h=actxserver('progid','machine','machineName','interface','interfaceName')h=actxserver('progid',machine)【例2】通過MATLAB控制WindowsMediaPlayer播放歌曲%創建WindowsMediaPlayer服務器,并返回對象句柄h>>h=actxserver('WMPlayer.OCX.7');%播放歌曲青花瓷>>h.openPlayer('F:\我的音樂盒\青花瓷.mp3')5/25/2021五、查詢COM對象的接口、方法和事件5/25/2021六、識別COM對象、接口、屬性、方法和事件5/25/2021七、查詢和設置COM對象(或接口)的屬性
get方法inspect方法
set方法
addproperty方法
deleteproperty方法5/25/2021八、調用COM對象和接口下的方法
S=h.invoke('methodname')
S=h.invoke('methodname',arg1,arg2,…)V=h.methodnameV=h.methodname(arg1,arg2,…)【例3】創建一個日歷控件,在一個循環里調用NextDay方法,將時間后推1000天,并返回當時的時間>>cal=actxcontrol('mscal.calendar',[1010540400]);>>fori=1:1000cal.NextDay;end>>cal.Value%返回修改后的時間5/25/2021九、注冊或注銷事件
registerevent方法
unregisterevent方法
unregisterallevents方法十、保存所做的工作
save方法十一、釋放COM接口和對象
delete方法
release方法5/25/2021第三節利用MATLAB生成Word文檔
創建MicrosoftWord服務器
建立Word文本文檔
插入表格
插入圖片插入頁眉、頁碼插入公式
保存文檔
完整案例5/25/2021一、創建MicrosoftWord服務器try
%若Word服務器已經打開,返回其句柄WordWord=actxGetRunningServer('Word.Application');catch
%創建一個MicrosoftWord服務器,返回句柄WordWord=actxserver('Word.Application');end1.創建MicrosoftWord服務器%設置Word服務器為可見狀態>>set(Word,'Visible',1);%或Word.Visible=1;2.設置對象屬性5/25/2021二、建立Word文本文檔%調用Add方法建立一個空白文檔,并返回其句柄Document.
>>Document=Word.Documents.Add;1.新建空白文檔5/25/2021>>Document.PageSetup.get2.頁面設置
查看PageSetup接口的所有屬性>>Document.PageSetup.TopMargin=60;%上邊距60磅>>Document.PageSetup.BottomMargin=45;%下邊距45磅>>Document.PageSetup.LeftMargin=45;%左邊距45磅>>Document.PageSetup.RightMargin=45;%右邊距45磅
頁面設置>>Document.PageSetup.set('VerticalAlignment')
查看枚舉類型屬性VerticalAlignment的屬性值5/25/2021利用Document的Content接口可以在文檔指定位置處寫入一段文字。Content接口有很多屬性和方法,讀者可通過Content.get和Content.methodsview命令查看。其中Start屬性用來獲取或設定文字內容的起始位置,End屬性用來獲取或設定文字內容的終止位置,Text屬性用來寫入文字內容,Font屬性用于字體設置,Paragraphs屬性用于段落設置。3.寫入文字內容
Content接口%返回Document的Content接口的句柄>>Content=Document.Content;>>Content.Start=0;%設置文檔內容的起始位置>>title='試卷分析';>>Content.Text=title;%輸入文字內容>>Content.Font.Size=16;%設置字號為165/25/2021
利用Word服務器的Selection接口可以在文檔中選定一個區域,并對所選區域進行相關操作。
Selection接口%返回Word服務器的Selection接口的句柄>>Selection=Word.Selection;%設置選定區域的起始位置為文檔內容的末尾>>Selection.Start=Content.end;>>Selection.TypeParagraph;%回車,另起一段>>xueqi='(2009—2010學年第一學期)';>>Selection.Text=xueqi;%在選定區域輸入文字內容>>Selection.Font.Size=12;%設置字號為12>>Selection.Font.Bold=0;%字體不加粗>>Selection.paragraphformat.Alignment='wdAlignParagraphCenter';%居中對齊>>Selection.MoveDown;%光標移到所選區域的最后>>Selection.TypeParagraph;%回車,另起一段>>Selection.TypeParagraph;%回車,另起一段>>Selection.Font.Size=10.5;%設置字號為10.55/25/2021
Word服務器的很多接口下都有Paragraphs接口,其作用都是類似的,用來進行段落設置。
Paragraphs接口%返回Document的Paragraphs接口的句柄>>DP=Document.Paragraphs;>>DPI1=DP.Item(1);%返回第1個段落的句柄>>DPI1.Range.Text=['I''mateacherworkinginTianjinUniversity'...'ofScienceandTechnology.'];%輸入第1自然段的文字內容%居中對齊>>DPI1.Range.ParagraphFormat.Alignment='wdAlignParagraphCenter';>>DPI1.Range.Font.Size=12;%設置字號為12>>DPI1.Range.Font.Bold=4;%字體加粗%在當前自然段的后面插入一個新的自然段>>DPI1.Range.InsertParagraphAfter;%第2自然段首行縮進25磅>>DP.Item(2).FirstLineIndent=25;5/25/2021三、插入表格Document接口下有一個Tables接口,實際上Word和Document的很多接口下都有Tables接口,比如Word.ActiveDocument、Word.Selection、Document.Paragraphs.Item(1).Range和Document.Content接口等。這些Tables接口的作用是相同的,用來在文檔中插入表格。1.插入表格>>Table=Document.Tables.Add(handle,m,n);例如:>>Tab1=Document.Tables.Add(Selection.Range,12,9);>>Tab2=Document.Tables.Add(Document.Paragraphs.Item(1).Range,2,2);5/25/2021表格句柄下有一個Borders屬性,它其實也是一個接口,用來設置表格邊框。2.設置表格邊框>>Table.Borders.get%查看Borders接口的所有屬性>>Table.Borders.set('屬性名')%查看Borders接口的屬性值>>Table.Borders.屬性名=‘屬性值’;%設置表格邊框一個表格有8種線(注意不是線型),分別對應上邊框、左邊框、下邊框、右邊框、內橫線、內豎線、左上至右下內斜線和左下至右上內斜線5/25/2021表格句柄Table的Rows屬性(也是一個接口)是指向表格各行的接口,Columns屬性(也是一個接口)是指向表格各列的接口,通過這兩個接口來設置表格的行高、列寬和對齊方式等。為行句柄下的Height屬性和列句柄下的Width屬性分別賦值,即可完成行高和列寬的設置。3.設置表格行高和列寬5/25/2021%在光標所在位置插入一個12行9列的表格>>Tab=Document.Tables.Add(Selection.Range,12,9);%定義表格列寬向量和行高向量>>column_width=[53.7736,85.1434,53.7736,35.0094,35.0094,...76.6981,55.1887,52.9245,54.9057];>>row_height=[28.5849,28.5849,28.5849,28.5849,25.4717,25.4717,...32.8302,312.1698,17.8302,49.2453,14.1509,18.6792];%通過循環設置表格每列的列寬>>fori=1:9Tab.Columns.Item(i).Width=column_width(i);end%通過循環設置表格每行的行高>>fori=1:12Tab.Rows.Item(i).Height=row_height(i);end5/25/2021Rows接口的Alignment屬性用來設置整個表格的水平對齊方式。4.設置表格對齊方式
整體設置%查看Alignment屬性的屬性值>>DTI.Rows.set('Alignment')%設置表格整體居中>>Table.Rows.Alignment='wdAlignRowCenter';
按單元格分別設置%設置表格的第1個單元格水平對齊方式>>DTI.Cell(1,1).Range.Paragraphs.Alignment=屬性值%設置表格的第1個單元格垂直對齊方式>>DTI.Cell(1,1).VerticalAlignment=屬性值;5/25/2021>>Table.Cell(i1,j1).Merge(Table.Cell(i2,j2));5.合并單元格>>Table.Cell(i,j).Range.Text=單元格內容;例如:>>DTI.Cell(1,1).Range.Text='課程名稱';>>DTI.Cell(1,3).Range.Text='課程號';>>DTI.Cell(1,5).Range.Text='任課教師學院';>>DTI.Cell(1,7).Range.Text='任課教師';>>DTI.Cell(2,1).Range.Text='授課班級';6.輸入單元格內容5/25/2021四、插入圖片
Document接口下有InlineShapes和Shapes屬性,它們都是接口,利用這兩個接口可以在Word文檔中插入圖片。由InlineShapes接口插入的圖片是InlineShape對象;由Shapes接口插入的圖像是Shape對象。
InlineShape對象可以是嵌入式OLE對象、鏈接式OLE對象、嵌入式圖片、OLE控件對象和水平線等。Word文檔中一幅版式為嵌入式的圖片就是一個InlineShape對象。可以將InlineShape對象理解為代表文檔文字層的對象,InlineShape對象被視為字符,可將其像字符一樣放置于一行文本中。5/25/2021可以將Shape對象理解為代表圖形層的對象,諸如自選圖形、任意多邊形、OLE對象、ActiveX控件、圖片等。Shape對象鎖定于文本范圍內,但是能夠任意移動,使用戶可以將它們定位于頁面的任何位置。Word文檔中一幅版式為四周型、緊密型、襯于文字下方或浮于文字上方的圖片就是一個Shape對象。5/25/20211.InlineShapes接口和InlineShape對象%返回InlineShapes接口的句柄>>InlineShapes=Document.InlineShapes;%查看InlineShape對象的類型>>InlineShapes.Item(1).set('Type')2.Shapes接口和Shape對象%返回Shapes接口的句柄>>Shapes=Document.Shapes;%查看Shape對象的類型>>Shapes.Item(1).set('Type');5/25/20213.插入外部圖片>>handle=Document.InlineShapes.AddPicture('外部圖片所在路徑');>>handle=Selection.InlineShapes.AddPicture('外部圖片所在路徑');
插入InlineShape對象第1條命令在整個文檔的左上角(默認錨點位置)插入一幅外部圖片。第2條命令在當前光標位置插入一幅外部圖片。兩條命令均返回當前InlineShape對象(剛插入的圖片)的句柄handle.5/25/2021>>handle=Document.Shapes.AddPicture('外部圖片所在路徑');>>handle=Document.Shapes.AddPicture(‘圖片路徑’,LinkToFile,…SaveWithDocument,Left,Top,Width,Height,Anchor)
插入Shape對象第1條命令在整個文檔的左上角(默認錨點位置)插入一幅外部圖片。第2條命令的作用是指定錨點位置,并在距離錨點一定位置處插入一幅外部圖片。后7個參數不是必須的,可以為空或從后向前忽略某些參數。需要注意的是,參數LinkToFile和SaveWithDocument的值不能同時為0或'False',但可以同時為空[]5/25/20215/25/2021例如:%圖片完整路徑>>filename=[matlabroot'\toolbox\images\imdemos\football.jpg'];%在光標位置處插入一幅圖片,版式為嵌入式>>handle1=Selection.InlineShapes.AddPicture(filename);%在指定位置處加入一幅圖片,版式為浮于文字上方>>handle2=Document.Shapes.AddPicture(filename,[],[],180,50,200,170);5/25/20214.插入內部圖片>>Selection.Paste%粘貼>>Selection.PasteSpecial%選擇性粘貼
Word服務器下的很多接口都有Paste和PasteSpecial方法,它們的作用就是將復制到剪貼板的內容粘貼到Word文檔中,這里的內容可以是文字、公式、表格和圖片等,也可以是外部文件。也就是說只要是能復制到剪貼板的內容,都可以通過Paste和PasteSpecial方法,把它們插入到Word文檔中。5/25/2021【例4】調用normrnd函數生成1000個服從標準正態分布的隨機數,作出頻數直方圖,并把它插入到Word文檔中。%調用normrnd函數生成1000個服從標準正態分布的隨機數>>data=normrnd(0,1,1000,1);%新建一個圖形窗口,設置為不可見狀態>>zft=figure('units','normalized','position',...[0.2804690.5533850.4289060.251302],'visible','off');%設置坐標系的位置和大小>>set(gca,'position',[50.75]);>>hist(data);%繪制頻數直方圖>>gridon;%添加參考網格>>xlabel('考試成績');ylabel('人數');%為X,Y軸加標簽>>hgexport(zft,'-clipboard');%將圖形復制到剪貼板%在當前光標位置處插入剪貼板上的圖片,版式為嵌入式>>Selection.Paste;>>Selection.TypeParagraph;%回車,另起一段%在當前光標位置處插入剪貼板上的圖片,版式為浮于文字上方>>Selection.PasteSpecial;5/25/20215.InlineShape對象與Shape對象的相互轉換>>handle=Document.InlineShapes.Item(i).ConvertToShape;
InlineShape對象轉Shape對象>>handle=Document.Shapes.Item(i).ConvertToInlineShape;
Shape對象轉InlineShape對象5/25/20216.設置圖片的版式(或文字環繞方式)>>Document.Shapes.Item(i).WrapFormat.Type='TypeString';>>Document.Shapes.Item(i).WrapFormat.Type=TypeNum;對于作為Shape對象的圖片,可以設置其版式,即文字環繞方向,而對于作為InlineShape對象的圖片,卻不能直接利用MATLAB進行版式設置。首先獲取某個Shape對象的句柄,它的WrapFormat接口下有一個枚舉類型的屬性Type,其可能的取值及說明如表4所示。可按如下方式修改Type的屬性值:5/25/20215/25/20217.設置圖片疊放次序>>Document.Shapes.Item(i).ZOrder(MsoZOrderCmd);對于Shape對象的圖片,還可以設置圖片的疊放次序。這要用到Shape對象的ZOrder方法,該方法的調用方式為:5/25/2021五、插入頁眉、頁碼>>Document.ActiveWindow.ActivePane.View.SeekView=…
'wdSeekCurrentPageHeader';>>Selection.Range.Paragraphs.Alignment=…'wdAlignParagraphLeft';>>Selection.InlineShapes.AddPicture(which('kedalogo.TIF'));>>Selection.MoveRight;>>Selection.Range.Text='多元統計分析教案';>>Selec
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 區塊鏈技術的創新發展及其商業價值
- 人工智能在醫療人才培養中的角色與價值
- 醫務人員法律意識培養與職業道德教育
- 以人為本的科技應用探索區塊鏈在辦公場景中的優勢
- 醫療人文關懷與患者安全文化的構建
- 保護患者隱私醫療行業的挑戰與策略
- 會議服務制作合同范例
- 人員外派勞務合同范例
- 小升初地理介紹課件
- 兩人股合同范例
- 廣東御景木業有限公司年產木質門8萬套建設項目環境影響報告書
- 展位搭建施工方案模板圖
- 文房四寶(課堂PPT)
- 第五單元晚清時期的內憂外患與救亡圖存期末復習測試卷-高一上學期歷史統編版(2019)必修中外歷史綱要上
- 鐵路基礎知識考試題庫500題(單選、多選、判斷)
- 2023小學語文新課程標準
- 任務1-安裝CPU、CPU風扇及內存
- 安全事故應急響應程序流程圖
- 07FK02 防空地下室通風設備安裝
- 家用青飼料切割機說明書-畢業設計
- GB/T 11253-2019碳素結構鋼冷軋鋼板及鋼帶
評論
0/150
提交評論