MATLAB生成Word和Excel文档.ppt

上传人:本田雅阁 文档编号:3482488 上传时间:2019-09-01 格式:PPT 页数:49 大小:1.58MB
返回 下载 相关 举报
MATLAB生成Word和Excel文档.ppt_第1页
第1页 / 共49页
MATLAB生成Word和Excel文档.ppt_第2页
第2页 / 共49页
MATLAB生成Word和Excel文档.ppt_第3页
第3页 / 共49页
MATLAB生成Word和Excel文档.ppt_第4页
第4页 / 共49页
MATLAB生成Word和Excel文档.ppt_第5页
第5页 / 共49页
点击查看更多>>
资源描述

《MATLAB生成Word和Excel文档.ppt》由会员分享,可在线阅读,更多相关《MATLAB生成Word和Excel文档.ppt(49页珍藏版)》请在三一文库上搜索。

1、2019/9/1,利用MATLAB生成Word和Excel文档,天 津 科 技 大 学 数 学 系 谢中华 E-mail: ,2019/9/1,我的新书,感谢赵社长和陈守平编辑! 感谢rocwoods(吴鹏)! 感谢math! 感谢各位版友的捧场!,2019/9/1,本次报告的提纲, 组件对象模型(COM), MATLAB中的ActiveX控件接口技术, 利用MATLAB生成Word文档, 利用MATLAB生成Excel文档,2019/9/1,第一节 组件对象模型(COM),2019/9/1,组件对象模型(Component Object Model,简称COM),它是微软公司为了使软件开发更

2、加符合人类的行为方式而提出的一种规范。在这种规范下,单个应用程序被分隔成多个独立的部分,也即组件(Component),这种做法的好处是可以随着技术的发展而用新的组件取代已有的组件,此时的应用程序不再是一个一出生就命中注定要过时的静态程序,而是随时可以用新组件取代旧组件而返老还童的动态程序。,一、什么是COM,2019/9/1,接口查询 生存期控制,二、COM接口,1. IUnknown接口,2. IDispatch接口,IDispatch接口接收一个函数名并执行它,2019/9/1,第二节 MATLAB中的ActiveX控件接口技术,一、actxcontrol函数,h = actxcontr

3、ol(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 =

4、figure(position, 360 278 535 410); % 在新建的图形窗口中创建一个日历控件,并设置控件的大小 cal = actxcontrol(mscal.calendar, 0 0 535 410, f) cal = COM.mscal_calendar,2019/9/1, eventhandle = (varargin)disp(祝大家身体健康!); f = figure(position,360,278,535,410); cal = actxcontrol(mscal.calendar,0,0,535,410,f,eventhandle);,2019/9/1,二、a

5、ctxcontrollist函数,查看系统上当前安装的所有COM控件 C = actxcontrollist % 查看系统上当前安装的所有COM控件,2019/9/1,三、actxcontrolselect函数,h = actxcontrolselect h, info = actxcontrolselect,2019/9/1,四、actxserver函数,h = actxserver(progid) h = actxserver(progid, machine, machineName) h = actxserver(progid, interface, interfaceName) h =

6、 actxserver(progid, machine, machineName, interface, interfaceName) h = actxserver(progid, machine),【例2】通过MATLAB控制Windows Media Player 播放歌曲,% 创建Windows Media Player服务器,并返回对象句柄h h = actxserver(WMPlayer.OCX.7); % 播放歌曲青花瓷 h.openPlayer(F:我的音乐盒青花瓷.mp3),2019/9/1,五、查询COM对象的接口、方法和事件,2019/9/1,六、识别COM对象、接口、属性

7、、方法和事件,2019/9/1,七、查询和设置COM对象(或接口)的属性,get方法 inspect方法 set方法 addproperty方法 deleteproperty方法,2019/9/1,八、调用COM对象和接口下的方法,S = h.invoke(methodname) S = h.invoke(methodname, arg1, arg2,) V = h.methodname V = h.methodname(arg1, arg2,),【例3】创建一个日历控件,在一个循环里调用NextDay 方法,将时间后推1000天,并返回当时的时间, cal = actxcontrol(msc

8、al.calendar,10 10 540 400); for i=1:1000 cal.NextDay; end cal.Value % 返回修改后的时间,2019/9/1,九、注册或注销事件,registerevent方法 unregisterevent方法 unregisterallevents方法,十、保存所做的工作,save方法,十一、释放COM接口和对象,delete方法 release方法,2019/9/1,第三节 利用MATLAB生成Word文档,创建Microsoft Word服务器 建立Word文本文档 插入表格 插入图片 插入页眉、页码 插入公式 保存文档 完整案例,20

9、19/9/1,一、创建Microsoft Word服务器,try % 若Word服务器已经打开,返回其句柄Word Word = actxGetRunningServer(Word.Application); catch % 创建一个Microsoft Word服务器,返回句柄Word Word = actxserver(Word.Application); end,1. 创建Microsoft Word服务器,% 设置Word服务器为可见状态 set(Word, Visible, 1); %或Word.Visible = 1;,2. 设置对象属性,2019/9/1,二、建立Word文本文档,

10、% 调用Add方法建立一个空白文档,并返回其句柄Document. Document = Word.Documents.Add;,1. 新建空白文档,2019/9/1, Document.PageSetup.get,2. 页面设置,查看PageSetup接口的所有属性, Document.PageSetup.TopMargin = 60; % 上边距60磅 Document.PageSetup.BottomMargin = 45; % 下边距45磅 Document.PageSetup.LeftMargin = 45; % 左边距45磅 Document.PageSetup.RightMarg

11、in = 45; % 右边距45磅,页面设置, Document.PageSetup.set(VerticalAlignment),查看枚举类型属性VerticalAlignment的属性值,2019/9/1,利用Document的Content接口可以在文档指定位置处写入一段文字。Content接口有很多属性和方法,读者可通过Content.get和Content.methodsview命令查看。其中Start属性用来获取或设定文字内容的起始位置,End属性用来获取或设定文字内容的终止位置,Text属性用来写入文字内容,Font属性用于字体设置,Paragraphs属性用于段落设置。,3.

12、写入文字内容,Content接口,% 返回Document的Content接口的句柄 Content = Document.Content; Content.Start = 0; % 设置文档内容的起始位置 title = 试 卷 分 析; Content.Text = title; % 输入文字内容 Content.Font.Size = 16 ; % 设置字号为16,2019/9/1,利用Word服务器的Selection接口可以在文档中选定一个区域,并对所选区域进行相关操作。,Selection接口,% 返回Word服务器的Selection接口的句柄 Selection = Word.

13、 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; %

14、 居中对齐 Selection.MoveDown; % 光标移到所选区域的最后 Selection.TypeParagraph; % 回车,另起一段 Selection.TypeParagraph; % 回车,另起一段 Selection.Font.Size=10.5; % 设置字号为10.5,2019/9/1,Word服务器的很多接口下都有Paragraphs接口,其作用都是类似的,用来进行段落设置。,Paragraphs接口,% 返回Document的Paragraphs接口的句柄 DP = Document.Paragraphs; DPI1 = DP.Item(1); % 返回第1个段落

15、的句柄 DPI1.Range.Text = Im a teacher working in Tianjin University. of Science and Technology.; % 输入第1自然段的文字内容 % 居中对齐 DPI1.Range.ParagraphFormat.Alignment = wdAlignParagraphCenter; DPI1.Range.Font.Size = 12; % 设置字号为12 DPI1.Range.Font.Bold = 4; % 字体加粗 % 在当前自然段的后面插入一个新的自然段 DPI1.Range.InsertParagraphAfte

16、r; % 第2自然段首行缩进25磅 DP.Item(2).FirstLineIndent = 25;,2019/9/1,三、插入表格,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);,例如:

17、Tab1 = Document.Tables.Add(Selection.Range, 12, 9); Tab2 = Document.Tables.Add(Document.Paragraphs.Item(1).Range, 2,2);,2019/9/1,表格句柄下有一个Borders属性,它其实也是一个接口,用来设置表格边框。,2. 设置表格边框, Table.Borders.get % 查看Borders接口的所有属性 Table.Borders.set(属性名) % 查看Borders接口的属性值 Table.Borders.属性名 = 属性值 ; %设置表格边框,一个表格有8种线(注

18、意不是线型),分别对应上边框、左边框、下边框、右边框、内横线、内竖线、左上至右下内斜线和左下至右上内斜线,2019/9/1,表格句柄Table的Rows属性(也是一个接口)是指向表格各行的接口,Columns属性(也是一个接口)是指向表格各列的接口,通过这两个接口来设置表格的行高、列宽和对齐方式等。为行句柄下的Height属性和列句柄下的Width属性分别赋值,即可完成行高和列宽的设置。,3. 设置表格行高和列宽,2019/9/1,% 在光标所在位置插入一个12行9列的表格 Tab = Document.Tables.Add(Selection.Range,12,9); % 定义表格列宽向量和

19、行高向量 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; % 通过循环设置表格每列的列宽 for i = 1:9 Tab.Columns.Item(i).Width = column_width(i); end % 通过循环设置表格每行的行高

20、 for i = 1:12 Tab.Rows.Item(i).Height = row_height(i); end,2019/9/1,Rows接口的Alignment属性用来设置整个表格的水平对齐方式。,4. 设置表格对齐方式,整体设置,% 查看Alignment属性的属性值 DTI.Rows.set(Alignment) % 设置表格整体居中 Table.Rows.Alignment = wdAlignRowCenter;,按单元格分别设置,% 设置表格的第1个单元格水平对齐方式 DTI.Cell(1,1).Range.Paragraphs.Alignment = 属性值 % 设置表格的第

21、1个单元格垂直对齐方式 DTI.Cell(1,1).VerticalAlignment = 属性值;,2019/9/1, 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

22、,1).Range.Text = 授课班级;,6. 输入单元格内容,2019/9/1,四、插入图片,Document接口下有InlineShapes和Shapes属性,它们都是接口,利用这两个接口可以在Word文档中插入图片。由InlineShapes接口插入的图片是InlineShape对象;由Shapes接口插入的图像是Shape对象。,InlineShape对象可以是嵌入式OLE对象、链接式OLE对象、嵌入式图片、OLE控件对象和水平线等。Word文档中一幅版式为嵌入式的图片就是一个InlineShape对象。可以将InlineShape对象理解为代表文档文字层的对象,InlineSha

23、pe 对象被视为字符,可将其像字符一样放置于一行文本中。,2019/9/1,可以将Shape对象理解为代表图形层的对象,诸如自选图形、任意多边形、OLE对象、ActiveX控件、图片等。Shape对象锁定于文本范围内,但是能够任意移动,使用户可以将它们定位于页面的任何位置。Word文档中一幅版式为四周型、紧密型、衬于文字下方或浮于文字上方的图片就是一个Shape 对象。,2019/9/1,1. InlineShapes接口和InlineShape对象,% 返回InlineShapes接口的句柄 InlineShapes = Document.InlineShapes ; % 查看InlineS

24、hape对象的类型 InlineShapes.Item(1).set(Type),2. Shapes接口和Shape对象,% 返回Shapes接口的句柄 Shapes = Document.Shapes ; % 查看Shape对象的类型 Shapes.Item(1).set(Type);,2019/9/1,3. 插入外部图片, handle = Document.InlineShapes.AddPicture(外部图片所在路径); handle = Selection.InlineShapes.AddPicture(外部图片所在路径);,插入InlineShape对象,第1条命令在整个文档的左

25、上角(默认锚点位置)插入一幅外部图片。 第2条命令在当前光标位置插入一幅外部图片。两条命令均返回当前InlineShape对象(刚插入的图片)的句柄handle.,2019/9/1, handle = Document.Shapes.AddPicture(外部图片所在路径); handle = Document.Shapes.AddPicture(图片路径, LinkToFile, SaveWithDocument, Left, Top, Width, Height, Anchor),插入Shape对象,第1条命令在整个文档的左上角(默认锚点位置)插入一幅外部图片。 第2条命令的作用是指定锚点

26、位置,并在距离锚点一定位置处插入一幅外部图片。后7个参数不是必须的,可以为空或从后向前忽略某些参数。需要注意的是,参数LinkToFile和SaveWithDocument的值不能同时为0或 False,但可以同时为空 ,2019/9/1,2019/9/1,例如: % 图片完整路径 filename = matlabroot toolboximagesimdemosfootball.jpg; % 在光标位置处插入一幅图片,版式为嵌入式 handle1 = Selection.InlineShapes.AddPicture(filename); % 在指定位置处加入一幅图片,版式为浮于文字上方

27、handle2 = Document.Shapes.AddPicture(filename, , , 180, 50, 200, 170);,2019/9/1,4. 插入内部图片, Selection. Paste % 粘贴 Selection. PasteSpecial %选择性粘贴,Word服务器下的很多接口都有Paste和PasteSpecial方法,它们的作用就是将复制到剪贴板的内容粘贴到Word文档中,这里的内容可以是文字、公式、表格和图片等,也可以是外部文件。也就是说只要是能复制到剪贴板的内容,都可以通过Paste和PasteSpecial方法,把它们插入到Word文档中。,201

28、9/9/1,【例4】调用normrnd函数生成1000个服从标准正态分布的随机数,作出频数直方图,并把它插入到Word文档中。,% 调用normrnd函数生成1000个服从标准正态分布的随机数 data = normrnd(0,1,1000,1); % 新建一个图形窗口,设置为不可见状态 zft = figure(units,normalized,position,. 0.280469 0.553385 0.428906 0.251302,visible,off); % 设置坐标系的位置和大小 set(gca,position,0.1 0.2 0.85 0.75); hist(data); %

29、 绘制频数直方图 grid on; % 添加参考网格 xlabel(考试成绩); ylabel(人数); % 为X,Y轴加标签 hgexport(zft, -clipboard); %将图形复制到剪贴板 % 在当前光标位置处插入剪贴板上的图片,版式为嵌入式 Selection.Paste; Selection.TypeParagraph; % 回车,另起一段 % 在当前光标位置处插入剪贴板上的图片,版式为浮于文字上方 Selection.PasteSpecial;,2019/9/1,5. InlineShape对象与Shape对象的相互转换, handle = Document.InlineS

30、hapes.Item(i).ConvertToShape;,InlineShape对象转Shape对象, handle = Document. Shapes.Item(i).ConvertToInlineShape;,Shape对象转InlineShape对象,2019/9/1,6. 设置图片的版式(或文字环绕方式), Document.Shapes.Item(i).WrapFormat.Type = TypeString; Document.Shapes.Item(i).WrapFormat.Type = TypeNum;,对于作为Shape对象的图片,可以设置其版式,即文字环绕方向,而对于

31、作为InlineShape对象的图片,却不能直接利用MATLAB进行版式设置。,首先获取某个Shape对象的句柄,它的WrapFormat接口下有一个枚举类型的属性Type,其可能的取值及说明如表4所示。可按如下方式修改Type的属性值:,2019/9/1,2019/9/1,7. 设置图片叠放次序, Document.Shapes.Item(i).ZOrder( MsoZOrderCmd );,对于Shape对象的图片,还可以设置图片的叠放次序。这要用到Shape对象的ZOrder方法,该方法的调用方式为:,2019/9/1,五、插入页眉、页码, Document.ActiveWindow.A

32、ctivePane.View.SeekView = wdSeekCurrentPageHeader; Selection.Range.Paragraphs.Alignment = wdAlignParagraphLeft; Selection.InlineShapes.AddPicture(which(kedalogo.TIF); Selection.MoveRight; Selection.Range.Text = 多元统计分析教案 ; Selection.SetRange(1,15); Selection.Range.Font.Name = 隶书; Selection.Range.Font

33、.Size = 16; Selection.Range.Font.bold = 2; Selection.EndKey;,2019/9/1, Selection.Range.Text = 第 ; Selection.EndKey; Selection.Fields.Add(Selection.Range,Page); Selection.EndKey; Selection.Range.Text = 页; Selection.SetRange(16,56); Selection.Range.Font.Name = 宋体; Selection.Range.Font.Size = 12; Docum

34、ent.ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument;,2019/9/1,六、插入公式, Document.Application.Run(MathTypeCommands.UIWrappers.InsertEquation),2019/9/1,七、保存文档,当整个Word文档设计完成之后,需要把它保存到硬盘上,这要用到Document接口下的SaveAs方法和Save方法,它们的调用方法如下:, Document.SaveAs(FilenameAndPath); Document.Save;,其中FilenameAndP

35、ath字符串用来指定文件名及保存路径。文档第1次保存时,若用Save方法,会弹出一个保存文档的界面,让用户指定文件名和选择保存路径。若用SaveAs方法,默认保存到我的文档文件夹。当不指定文件名和路径时,文档被自动命名并保存到我的文档文件夹,当只指定路径不指定文件名时,会出现错误。,2019/9/1,八、完整案例,代码略 效果图如右,2019/9/1,第四节 利用MATLAB生成Excel文档,创建Microsoft Excel服务器 新建Excel工作簿 获取工作表对象句柄 插入、复制、删除、移动和重命名工作表 页面设置 选取工作表区域 设置行高和列宽,2019/9/1,合并单元格 边框设置 设置单元格对齐方式 写入单元格内容 插入图片 保存工作簿 完整案例,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1