MATLAB生成Word和Excel文檔綜述_第1頁
MATLAB生成Word和Excel文檔綜述_第2頁
MATLAB生成Word和Excel文檔綜述_第3頁
MATLAB生成Word和Excel文檔綜述_第4頁
MATLAB生成Word和Excel文檔綜述_第5頁
已閱讀5頁,還剩44頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

利用MATLAB生成Word和Excel文檔天津科技大學(xué)數(shù)學(xué)系謝中華E-mail:xiezhh@5/25/2021我的新書感謝趙社長和陳守平編輯!感謝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,簡稱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文本文檔

插入表格

插入圖片插入頁眉、頁碼插入公式

保存文檔

完整案例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.頁面設(shè)置

查看PageSetup接口的所有屬性>>Document.PageSetup.TopMargin=60;%上邊距60磅>>Document.PageSetup.BottomMargin=45;%下邊距45磅>>Document.PageSetup.LeftMargin=45;%左邊距45磅>>Document.PageSetup.RightMargin=45;%右邊距45磅

頁面設(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),使用戶可以將它們定位于頁面的任何位置。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('考試成績');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五、插入頁眉、頁碼>>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)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論