版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
利用MATLAB生成Word和Excel文檔天津科技大學(xué)數(shù)學(xué)系謝中華E-mail:xiezhh@5/25/2021我的新書感謝趙社長(zhǎng)和陳守平編輯!感謝rocwoods(吳鵬)!感謝math!感謝各位版友的捧場(chǎng)!5/25/2021本次報(bào)告的提綱※組件對(duì)象模型(COM)※MATLAB中的ActiveX控件接口技術(shù)※利用MATLAB生成Word文檔※利用MATLAB生成Excel文檔5/25/2021第一節(jié)組件對(duì)象模型(COM)5/25/2021
組件對(duì)象模型(ComponentObjectModel,簡(jiǎn)稱COM),它是微軟公司為了使軟件開發(fā)更加符合人類的行為方式而提出的一種規(guī)范。在這種規(guī)范下,單個(gè)應(yīng)用程序被分隔成多個(gè)獨(dú)立的部分,也即組件(Component),這種做法的好處是可以隨著技術(shù)的發(fā)展而用新的組件取代已有的組件,此時(shí)的應(yīng)用程序不再是一個(gè)一出生就命中注定要過時(shí)的靜態(tài)程序,而是隨時(shí)可以用新組件取代舊組件而返老還童的動(dòng)態(tài)程序。一、什么是COM5/25/2021接口查詢生存期控制二、COM接口1.IUnknown接口2.IDispatch接口
IDispatch接口接收一個(gè)函數(shù)名并執(zhí)行它5/25/2021第二節(jié)MATLAB中的ActiveX控件接口技術(shù)一、actxcontrol函數(shù)
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】創(chuàng)建日歷控件%新建一個(gè)圖形窗口,指定圖形窗口大小,返回圖形窗口句柄f>>f=figure('position',[360278535410]);%在新建的圖形窗口中創(chuàng)建一個(gè)日歷控件,并設(shè)置控件的大小>>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函數(shù)查看系統(tǒng)上當(dāng)前安裝的所有COM控件>>C=actxcontrollist%查看系統(tǒng)上當(dāng)前安裝的所有COM控件5/25/2021三、actxcontrolselect函數(shù)
h=actxcontrolselect[h,info]=actxcontrolselect5/25/2021四、actxserver函數(shù)
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播放歌曲%創(chuàng)建WindowsMediaPlayer服務(wù)器,并返回對(duì)象句柄h>>h=actxserver('WMPlayer.OCX.7');%播放歌曲青花瓷>>h.openPlayer('F:\我的音樂盒\(zhòng)青花瓷.mp3')5/25/2021五、查詢COM對(duì)象的接口、方法和事件5/25/2021六、識(shí)別COM對(duì)象、接口、屬性、方法和事件5/25/2021七、查詢和設(shè)置COM對(duì)象(或接口)的屬性
get方法inspect方法
set方法
addproperty方法
deleteproperty方法5/25/2021八、調(diào)用COM對(duì)象和接口下的方法
S=h.invoke('methodname')
S=h.invoke('methodname',arg1,arg2,…)V=h.methodnameV=h.methodname(arg1,arg2,…)【例3】創(chuàng)建一個(gè)日歷控件,在一個(gè)循環(huán)里調(diào)用NextDay方法,將時(shí)間后推1000天,并返回當(dāng)時(shí)的時(shí)間>>cal=actxcontrol('mscal.calendar',[1010540400]);>>fori=1:1000cal.NextDay;end>>cal.Value%返回修改后的時(shí)間5/25/2021九、注冊(cè)或注銷事件
registerevent方法
unregisterevent方法
unregisterallevents方法十、保存所做的工作
save方法十一、釋放COM接口和對(duì)象
delete方法
release方法5/25/2021第三節(jié)利用MATLAB生成Word文檔
創(chuàng)建MicrosoftWord服務(wù)器
建立Word文本文檔
插入表格
插入圖片插入頁(yè)眉、頁(yè)碼插入公式
保存文檔
完整案例5/25/2021一、創(chuàng)建MicrosoftWord服務(wù)器try
%若Word服務(wù)器已經(jīng)打開,返回其句柄WordWord=actxGetRunningServer('Word.Application');catch
%創(chuàng)建一個(gè)MicrosoftWord服務(wù)器,返回句柄WordWord=actxserver('Word.Application');end1.創(chuàng)建MicrosoftWord服務(wù)器%設(shè)置Word服務(wù)器為可見狀態(tài)>>set(Word,'Visible',1);%或Word.Visible=1;2.設(shè)置對(duì)象屬性5/25/2021二、建立Word文本文檔%調(diào)用Add方法建立一個(gè)空白文檔,并返回其句柄Document.
>>Document=Word.Documents.Add;1.新建空白文檔5/25/2021>>Document.PageSetup.get2.頁(yè)面設(shè)置
查看PageSetup接口的所有屬性>>Document.PageSetup.TopMargin=60;%上邊距60磅>>Document.PageSetup.BottomMargin=45;%下邊距45磅>>Document.PageSetup.LeftMargin=45;%左邊距45磅>>Document.PageSetup.RightMargin=45;%右邊距45磅
頁(yè)面設(shè)置>>Document.PageSetup.set('VerticalAlignment')
查看枚舉類型屬性VerticalAlignment的屬性值5/25/2021利用Document的Content接口可以在文檔指定位置處寫入一段文字。Content接口有很多屬性和方法,讀者可通過Content.get和Content.methodsview命令查看。其中Start屬性用來獲取或設(shè)定文字內(nèi)容的起始位置,End屬性用來獲取或設(shè)定文字內(nèi)容的終止位置,Text屬性用來寫入文字內(nèi)容,F(xiàn)ont屬性用于字體設(shè)置,Paragraphs屬性用于段落設(shè)置。3.寫入文字內(nèi)容
Content接口%返回Document的Content接口的句柄>>Content=Document.Content;>>Content.Start=0;%設(shè)置文檔內(nèi)容的起始位置>>title='試卷分析';>>Content.Text=title;%輸入文字內(nèi)容>>Content.Font.Size=16;%設(shè)置字號(hào)為165/25/2021
利用Word服務(wù)器的Selection接口可以在文檔中選定一個(gè)區(qū)域,并對(duì)所選區(qū)域進(jìn)行相關(guān)操作。
Selection接口%返回Word服務(wù)器的Selection接口的句柄>>Selection=Word.Selection;%設(shè)置選定區(qū)域的起始位置為文檔內(nèi)容的末尾>>Selection.Start=Content.end;>>Selection.TypeParagraph;%回車,另起一段>>xueqi='(2009—2010學(xué)年第一學(xué)期)';>>Selection.Text=xueqi;%在選定區(qū)域輸入文字內(nèi)容>>Selection.Font.Size=12;%設(shè)置字號(hào)為12>>Selection.Font.Bold=0;%字體不加粗>>Selection.paragraphformat.Alignment='wdAlignParagraphCenter';%居中對(duì)齊>>Selection.MoveDown;%光標(biāo)移到所選區(qū)域的最后>>Selection.TypeParagraph;%回車,另起一段>>Selection.TypeParagraph;%回車,另起一段>>Selection.Font.Size=10.5;%設(shè)置字號(hào)為10.55/25/2021
Word服務(wù)器的很多接口下都有Paragraphs接口,其作用都是類似的,用來進(jìn)行段落設(shè)置。
Paragraphs接口%返回Document的Paragraphs接口的句柄>>DP=Document.Paragraphs;>>DPI1=DP.Item(1);%返回第1個(gè)段落的句柄>>DPI1.Range.Text=['I''mateacherworkinginTianjinUniversity'...'ofScienceandTechnology.'];%輸入第1自然段的文字內(nèi)容%居中對(duì)齊>>DPI1.Range.ParagraphFormat.Alignment='wdAlignParagraphCenter';>>DPI1.Range.Font.Size=12;%設(shè)置字號(hào)為12>>DPI1.Range.Font.Bold=4;%字體加粗%在當(dāng)前自然段的后面插入一個(gè)新的自然段>>DPI1.Range.InsertParagraphAfter;%第2自然段首行縮進(jìn)25磅>>DP.Item(2).FirstLineIndent=25;5/25/2021三、插入表格Document接口下有一個(gè)Tables接口,實(shí)際上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表格句柄下有一個(gè)Borders屬性,它其實(shí)也是一個(gè)接口,用來設(shè)置表格邊框。2.設(shè)置表格邊框>>Table.Borders.get%查看Borders接口的所有屬性>>Table.Borders.set('屬性名')%查看Borders接口的屬性值>>Table.Borders.屬性名=‘屬性值’;%設(shè)置表格邊框一個(gè)表格有8種線(注意不是線型),分別對(duì)應(yīng)上邊框、左邊框、下邊框、右邊框、內(nèi)橫線、內(nèi)豎線、左上至右下內(nèi)斜線和左下至右上內(nèi)斜線5/25/2021表格句柄Table的Rows屬性(也是一個(gè)接口)是指向表格各行的接口,Columns屬性(也是一個(gè)接口)是指向表格各列的接口,通過這兩個(gè)接口來設(shè)置表格的行高、列寬和對(duì)齊方式等。為行句柄下的Height屬性和列句柄下的Width屬性分別賦值,即可完成行高和列寬的設(shè)置。3.設(shè)置表格行高和列寬5/25/2021%在光標(biāo)所在位置插入一個(gè)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];%通過循環(huán)設(shè)置表格每列的列寬>>fori=1:9Tab.Columns.Item(i).Width=column_width(i);end%通過循環(huán)設(shè)置表格每行的行高>>fori=1:12Tab.Rows.Item(i).Height=row_height(i);end5/25/2021Rows接口的Alignment屬性用來設(shè)置整個(gè)表格的水平對(duì)齊方式。4.設(shè)置表格對(duì)齊方式
整體設(shè)置%查看Alignment屬性的屬性值>>DTI.Rows.set('Alignment')%設(shè)置表格整體居中>>Table.Rows.Alignment='wdAlignRowCenter';
按單元格分別設(shè)置%設(shè)置表格的第1個(gè)單元格水平對(duì)齊方式>>DTI.Cell(1,1).Range.Paragraphs.Alignment=屬性值%設(shè)置表格的第1個(gè)單元格垂直對(duì)齊方式>>DTI.Cell(1,1).VerticalAlignment=屬性值;5/25/2021>>Table.Cell(i1,j1).Merge(Table.Cell(i2,j2));5.合并單元格>>Table.Cell(i,j).Range.Text=單元格內(nèi)容;例如:>>DTI.Cell(1,1).Range.Text='課程名稱';>>DTI.Cell(1,3).Range.Text='課程號(hào)';>>DTI.Cell(1,5).Range.Text='任課教師學(xué)院';>>DTI.Cell(1,7).Range.Text='任課教師';>>DTI.Cell(2,1).Range.Text='授課班級(jí)';6.輸入單元格內(nèi)容5/25/2021四、插入圖片
Document接口下有InlineShapes和Shapes屬性,它們都是接口,利用這兩個(gè)接口可以在Word文檔中插入圖片。由InlineShapes接口插入的圖片是InlineShape對(duì)象;由Shapes接口插入的圖像是Shape對(duì)象。
InlineShape對(duì)象可以是嵌入式OLE對(duì)象、鏈接式OLE對(duì)象、嵌入式圖片、OLE控件對(duì)象和水平線等。Word文檔中一幅版式為嵌入式的圖片就是一個(gè)InlineShape對(duì)象??梢詫nlineShape對(duì)象理解為代表文檔文字層的對(duì)象,InlineShape對(duì)象被視為字符,可將其像字符一樣放置于一行文本中。5/25/2021可以將Shape對(duì)象理解為代表圖形層的對(duì)象,諸如自選圖形、任意多邊形、OLE對(duì)象、ActiveX控件、圖片等。Shape對(duì)象鎖定于文本范圍內(nèi),但是能夠任意移動(dòng),使用戶可以將它們定位于頁(yè)面的任何位置。Word文檔中一幅版式為四周型、緊密型、襯于文字下方或浮于文字上方的圖片就是一個(gè)Shape對(duì)象。5/25/20211.InlineShapes接口和InlineShape對(duì)象%返回InlineShapes接口的句柄>>InlineShapes=Document.InlineShapes;%查看InlineShape對(duì)象的類型>>InlineShapes.Item(1).set('Type')2.Shapes接口和Shape對(duì)象%返回Shapes接口的句柄>>Shapes=Document.Shapes;%查看Shape對(duì)象的類型>>Shapes.Item(1).set('Type');5/25/20213.插入外部圖片>>handle=Document.InlineShapes.AddPicture('外部圖片所在路徑');>>handle=Selection.InlineShapes.AddPicture('外部圖片所在路徑');
插入InlineShape對(duì)象第1條命令在整個(gè)文檔的左上角(默認(rèn)錨點(diǎn)位置)插入一幅外部圖片。第2條命令在當(dāng)前光標(biāo)位置插入一幅外部圖片。兩條命令均返回當(dāng)前InlineShape對(duì)象(剛插入的圖片)的句柄handle.5/25/2021>>handle=Document.Shapes.AddPicture('外部圖片所在路徑');>>handle=Document.Shapes.AddPicture(‘圖片路徑’,LinkToFile,…SaveWithDocument,Left,Top,Width,Height,Anchor)
插入Shape對(duì)象第1條命令在整個(gè)文檔的左上角(默認(rèn)錨點(diǎn)位置)插入一幅外部圖片。第2條命令的作用是指定錨點(diǎn)位置,并在距離錨點(diǎn)一定位置處插入一幅外部圖片。后7個(gè)參數(shù)不是必須的,可以為空或從后向前忽略某些參數(shù)。需要注意的是,參數(shù)LinkToFile和SaveWithDocument的值不能同時(shí)為0或'False',但可以同時(shí)為空[]5/25/20215/25/2021例如:%圖片完整路徑>>filename=[matlabroot'\toolbox\images\imdemos\football.jpg'];%在光標(biāo)位置處插入一幅圖片,版式為嵌入式>>handle1=Selection.InlineShapes.AddPicture(filename);%在指定位置處加入一幅圖片,版式為浮于文字上方>>handle2=Document.Shapes.AddPicture(filename,[],[],180,50,200,170);5/25/20214.插入內(nèi)部圖片>>Selection.Paste%粘貼>>Selection.PasteSpecial%選擇性粘貼
Word服務(wù)器下的很多接口都有Paste和PasteSpecial方法,它們的作用就是將復(fù)制到剪貼板的內(nèi)容粘貼到Word文檔中,這里的內(nèi)容可以是文字、公式、表格和圖片等,也可以是外部文件。也就是說只要是能復(fù)制到剪貼板的內(nèi)容,都可以通過Paste和PasteSpecial方法,把它們插入到Word文檔中。5/25/2021【例4】調(diào)用normrnd函數(shù)生成1000個(gè)服從標(biāo)準(zhǔn)正態(tài)分布的隨機(jī)數(shù),作出頻數(shù)直方圖,并把它插入到Word文檔中。%調(diào)用normrnd函數(shù)生成1000個(gè)服從標(biāo)準(zhǔn)正態(tài)分布的隨機(jī)數(shù)>>data=normrnd(0,1,1000,1);%新建一個(gè)圖形窗口,設(shè)置為不可見狀態(tài)>>zft=figure('units','normalized','position',...[0.2804690.5533850.4289060.251302],'visible','off');%設(shè)置坐標(biāo)系的位置和大小>>set(gca,'position',[50.75]);>>hist(data);%繪制頻數(shù)直方圖>>gridon;%添加參考網(wǎng)格>>xlabel('考試成績(jī)');ylabel('人數(shù)');%為X,Y軸加標(biāo)簽>>hgexport(zft,'-clipboard');%將圖形復(fù)制到剪貼板%在當(dāng)前光標(biāo)位置處插入剪貼板上的圖片,版式為嵌入式>>Selection.Paste;>>Selection.TypeParagraph;%回車,另起一段%在當(dāng)前光標(biāo)位置處插入剪貼板上的圖片,版式為浮于文字上方>>Selection.PasteSpecial;5/25/20215.InlineShape對(duì)象與Shape對(duì)象的相互轉(zhuǎn)換>>handle=Document.InlineShapes.Item(i).ConvertToShape;
InlineShape對(duì)象轉(zhuǎn)Shape對(duì)象>>handle=Document.Shapes.Item(i).ConvertToInlineShape;
Shape對(duì)象轉(zhuǎn)InlineShape對(duì)象5/25/20216.設(shè)置圖片的版式(或文字環(huán)繞方式)>>Document.Shapes.Item(i).WrapFormat.Type='TypeString';>>Document.Shapes.Item(i).WrapFormat.Type=TypeNum;對(duì)于作為Shape對(duì)象的圖片,可以設(shè)置其版式,即文字環(huán)繞方向,而對(duì)于作為InlineShape對(duì)象的圖片,卻不能直接利用MATLAB進(jìn)行版式設(shè)置。首先獲取某個(gè)Shape對(duì)象的句柄,它的WrapFormat接口下有一個(gè)枚舉類型的屬性Type,其可能的取值及說明如表4所示??砂慈缦路绞叫薷腡ype的屬性值:5/25/20215/25/20217.設(shè)置圖片疊放次序>>Document.Shapes.Item(i).ZOrder(MsoZOrderCmd);對(duì)于Shape對(duì)象的圖片,還可以設(shè)置圖片的疊放次序。這要用到Shape對(duì)象的ZOrder方法,該方法的調(diào)用方式為:5/25/2021五、插入頁(yè)眉、頁(yè)碼>>Document.ActiveWindow.ActivePane.View.SeekView=…
'wdSeekCurrentPageHeader';>>Selection.Range.Paragraphs.Alignment=…'wdAlignParagraphLeft';>>Selection.InlineShapes.AddPicture(which('kedalogo.TIF'));>>Selection.MoveRight;>>Selection.Range.Text='多元統(tǒng)計(jì)分析教案';>>Selec
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025臨時(shí)使用土地合同書
- 預(yù)付款擔(dān)保合同正規(guī)范本
- 貨物運(yùn)輸合同民事起訴狀年
- 商業(yè)房出租合同
- 的房地產(chǎn)合同范文匯編
- 2025廣告拍攝制作的合同
- 2025合同模板股權(quán)結(jié)構(gòu)設(shè)計(jì)內(nèi)容范本
- 2025年紅細(xì)胞溶血素項(xiàng)目申請(qǐng)報(bào)告模稿
- 2025年超聲波大口徑井徑檢測(cè)設(shè)備項(xiàng)目立項(xiàng)申請(qǐng)報(bào)告模板
- 2025年鉻系鐵合金項(xiàng)目規(guī)劃申請(qǐng)報(bào)告模稿
- 2025年山西國(guó)際能源集團(tuán)限公司所屬企業(yè)招聘43人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 青海省海北藏族自治州(2024年-2025年小學(xué)六年級(jí)語文)統(tǒng)編版隨堂測(cè)試(上學(xué)期)試卷及答案
- 外研版(三起)小學(xué)英語三年級(jí)下冊(cè)Unit 1 Animal friends Get ready start up 課件
- 江蘇省無錫市2023-2024學(xué)年高三上學(xué)期期終教學(xué)質(zhì)量調(diào)研測(cè)試語文試題(解析版)
- 銅礦隱蔽致災(zāi)普查治理工作計(jì)劃
- 《民航安全檢查(安檢技能實(shí)操)》課件-第一章 民航安全檢查員職業(yè)道德
- DB34T4826-2024畜禽養(yǎng)殖業(yè)污染防治技術(shù)規(guī)范
- 腰麻課件教學(xué)課件
- 石油化工企業(yè)環(huán)境保護(hù)管理制度預(yù)案
- 2024年甘肅省高考?xì)v史試卷(含答案解析)
- 2024年山東省煙臺(tái)市初中學(xué)業(yè)水平考試地理試卷含答案
評(píng)論
0/150
提交評(píng)論