![数理统计及其在数学建模中的实践(使用MATLAB)](https://wfqqreader-1252317822.image.myqcloud.com/cover/996/30762996/b_30762996.jpg)
1.8 利用MATLAB生成Word文档
1.8.1 创建Microsoft Word服务器
1.创建Microsoft Word服务器
创建Microsoft Word服务器的代码如下:
![](https://epubservercos.yuewen.com/19D965/16741087904971906/epubprivate/OEBPS/Images/978-7-111-43176-3-Chapter01-118.jpg?sign=1739295879-W3hNKFlSGROikNswVwtqUurUwo3H1p7R-0-3b6c45406435f9f916c576c8a8b075d1)
2.设置对象属性
%设置Word服务器为可见状态
![](https://epubservercos.yuewen.com/19D965/16741087904971906/epubprivate/OEBPS/Images/978-7-111-43176-3-Chapter01-119.jpg?sign=1739295879-6liCoT6BrEi5F44M98JgfYln6B1SY9O1-0-397168d70f7ad2f5f6c6fafa91b2911e)
1.8.2 建立Word文本文档
1.新建空白文档
%调用Add方法建立一个空白文档,并返回其句柄Document.
>>Document=Word.Documents.Add;
2.页面设置
查看PageSetup接口的所有属性
>>Document.PageSetup.get
页面设置
![](https://epubservercos.yuewen.com/19D965/16741087904971906/epubprivate/OEBPS/Images/978-7-111-43176-3-Chapter01-120.jpg?sign=1739295879-KI5GSv30VUrAsIdNnd80KoqKubaPBdsJ-0-56be2e4e30acf2f1e3fec44a8da0b1d1)
查看枚举类型属性VerticalAlignment的属性值
>>Document.PageSetup.set( VerticalAlignment
)
3.写入文字内容
(1)Content接口
利用Document的Content接口可以在文档指定位置写入一段文字.Content接口有很多属性和方法,读者可通过Content.get和Content.methodsview命令查看.其中Start属性用来获取或设定文字内容的起始位置,End属性用来获取或设定文字内容的终止位置,Text属性用来写入文字内容,Font属性用于字体设置,Paragraphs属性用于段落设置.%返回Document的Content接口的句柄
![](https://epubservercos.yuewen.com/19D965/16741087904971906/epubprivate/OEBPS/Images/978-7-111-43176-3-Chapter01-123.jpg?sign=1739295879-bbHs2R5KFDHOIRIc69cYDckCbTX5F4Ca-0-91f28ebc048499f89c149e032a063873)
(2)Selection接口
利用Word服务器的Selection接口可以在文档中选定一个区域,并对所选区域进行相关操作.
%返回Word服务器的Selection接口的句柄>>Selection=Word.Selection;
%设置选定区域的起始位置为文档内容的末尾
![](https://epubservercos.yuewen.com/19D965/16741087904971906/epubprivate/OEBPS/Images/978-7-111-43176-3-Chapter01-124.jpg?sign=1739295879-jftfdGTqs5Sgay825bASi8EnFvHnNgGJ-0-be42fd70e22cc841c58d4a7e78f71973)
![](https://epubservercos.yuewen.com/19D965/16741087904971906/epubprivate/OEBPS/Images/978-7-111-43176-3-Chapter01-125.jpg?sign=1739295879-ot4hIKkBA2gJTu2wbrdRL83VTpD3ksZZ-0-8d20f19261f43595bb7cc7828f21c031)
(3)Paragraphs接口
Word服务器的很多接口下都有Paragraphs接口,其作用类似都是用来进行段落设置的.%返回Document的Paragraphs接口的句柄
![](https://epubservercos.yuewen.com/19D965/16741087904971906/epubprivate/OEBPS/Images/978-7-111-43176-3-Chapter01-126.jpg?sign=1739295879-vJE9bzohSjuVMSparkOlfIvCDLXHUDAZ-0-e82772a90d3346b341e6a1b9878870e7)
%在当前自然段的后面插入一个新的自然段
>>DPI1.Range.InsertParagraphAfter;
%第2自然段首行缩进25磅
>>DP.Item(2).FirstLineIndent=25;
1.8.3 插入表格
1.插入表格
Document接口下有一个Tables接口,实际上Word和Document的很多接口下都有Tables接口,比如Word.ActiveDocument、Word.Selection、Document.Paragraphs.Item(1).Range和Document.Content接口等.这些Tables接口的作用是相同的,用来在文档中插入表格.其格式为:
>>Table=Document.Tables.Add(handle,m,n);
例如:
![](https://epubservercos.yuewen.com/19D965/16741087904971906/epubprivate/OEBPS/Images/978-7-111-43176-3-Chapter01-127.jpg?sign=1739295879-MK1cZ0YScGBrDLFOOuLY8PEbbW8ApCbG-0-d02e10a2342d3fe42a173837533be24c)
2.设置表格边框
表格句柄下有一个Borders属性,它其实也是一个接口,用来设置表格边框.
![](https://epubservercos.yuewen.com/19D965/16741087904971906/epubprivate/OEBPS/Images/978-7-111-43176-3-Chapter01-128.jpg?sign=1739295879-QxJYKoQqv0pYnq2Cgy2ZeyGLOW2i34wC-0-e91f66a9313e34d16fff3360af4b5969)
一个表格有8种线(注意不是线型),分别对应上边框、左边框、下边框、右边框、内横线、内竖线、左上至右下内斜线和左下至右上内斜线.
3.设置表格行高和列宽
表格句柄Table的Rows属性(也是一个接口)是指向表格各行的接口,Columns属性(也是一个接口)是指向表格各列的接口,通过这两个接口来设置表格的行高、列宽和对齐方式等.为行句柄下的Height属性和列句柄下的Width属性分别赋值,即可完成行高和列宽的设置.
%在光标所在位置插入一个12行9列的表格
![](https://epubservercos.yuewen.com/19D965/16741087904971906/epubprivate/OEBPS/Images/978-7-111-43176-3-Chapter01-129.jpg?sign=1739295879-oq83yjUPBTvu1iL6W30cEUkd4dIscNoH-0-ae37560266bb7a1a1777bd65a964ad5a)
4.设置表格对齐方式1
(1)整体设置
Rows接口的Alignment属性用来设置整个表格的水平对齐方式.
%查看Alignment属性的属性值
>>DTI.Rows.set( Alignment
)
%设置表格整体居中
>>Table.Rows.Alignment= wdAlignRowCenter
;
(2)按单元格分别设置
%设置表格的第1个单元格水平对齐方式
>>DTI.Cell(1,1).Range.Paragraphs.Alignment=属性值
%设置表格的第1个单元格垂直对齐方式
>>DTI.Cell(1,1).VerticalAlignment=属性值;
%在光标所在位置插入一个12行9列的表格
>>Tab=Document.Tables.Add(Selection.Range,12,9);
%定义表格列宽向量和行高向量
![](https://epubservercos.yuewen.com/19D965/16741087904971906/epubprivate/OEBPS/Images/978-7-111-43176-3-Chapter01-134.jpg?sign=1739295879-jH9YpiyUJ1GycPhMdT6MaUocf6CNLlJI-0-f09c6abb8e2597c9e2df16d06f7e7606)
%通过循环设置表格每列的列宽
![](https://epubservercos.yuewen.com/19D965/16741087904971906/epubprivate/OEBPS/Images/978-7-111-43176-3-Chapter01-135.jpg?sign=1739295879-dOrBTrdWQ7ywbwF3MlpCMIF20jQRR7tS-0-89283ab0dbf4eccbed8fafeafc11736c)
%通过循环设置表格每行的行高
![](https://epubservercos.yuewen.com/19D965/16741087904971906/epubprivate/OEBPS/Images/978-7-111-43176-3-Chapter01-136.jpg?sign=1739295879-NjJzZPwmeVDqd0UbibfbOroYFw77BLEP-0-d8c31a2459fc2962d909416e7a415a07)
5.设置表格对齐方式2
(1)整体设置
Rows接口的Alignment属性用来设置整个表格的水平对齐方式.
%查看Alignment属性的属性值
>>DTI.Rows.set( Alignment
)
%设置表格整体居中
>>Table.Rows.Alignment= wdAlignRowCenter
;
(2)按单元格分别设置
%设置表格的第1个单元格水平对齐方式
>>DTI.Cell(1,1).Range.Paragraphs.Alignment=属性值
%设置表格的第1个单元格垂直对齐方式
>>DTI.Cell(1,1).VerticalAlignment=属性值;
6.合并单元格
>>Table.Cell(i1,j1).Merge(Table.Cell(i2,j2));
7.输入单元格内容
>>Table.Cell(i,j).Range.Text=单元格内容;例如:
![](https://epubservercos.yuewen.com/19D965/16741087904971906/epubprivate/OEBPS/Images/978-7-111-43176-3-Chapter01-141.jpg?sign=1739295879-OLf0kG8aZDj66b0mxU2erjXPsKny3oPg-0-2ffe4e148c2887712c3ede7b07b0aca7)
1.8.4 插入图片
Document接口下有InlineShapes和Shapes属性,它们也都是接口.利用这两个接口可以在Word文档中插入图片.由InlineShapes接口插入的图片是InlineShape对象;由Shapes接口插入的图像是Shape对象.
InlineShape对象可以是嵌入式OLE对象、链接式OLE对象、嵌入式图片、OLE控件对象和水平线等.Word文档中一幅版式为嵌入式的图片就是一个InlineShape对象.可以将In-lineShape对象理解为代表文档文字层的对象,InlineShape对象被视为字符,可将其像字符一样放置于一行文本中.
也可以将Shape对象理解为代表图形层的对象,诸如自选图形、任意多边形、OLE对象、ActiveX控件、图片等.Shape对象锁定于文本范围内,但是能够任意移动,使用户可以将它们定位于页面的任何位置.Word文档中一幅版式为四周型、紧密型、衬于文字下方或浮于文字上方的图片就是一个Shape对象.
1.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
);
3.插入外部图片
(1)插入InlineShape对象
>>handle=Document.InlineShapes.AddPicture( 外部图片所在路径
);
>>handle=Selection.InlineShapes.AddPicture( 外部图片所在路径
);
第1条命令在整个文档的左上角(默认描点位置)插入一幅外部图片.
第2条命令在当前光标位置插入一幅外部图片,两条命令均返回当前InlineShape对象(刚插入的图片)的句柄handle.
(2)插入Shape对象
>>handle=Document.Shapes.AddPicture( 外部图片所在路径
);
>>handle=Document.Shapes.AddPicture( 图片路径
,LinkToFile,…
SaveWithDocument,Left,Top,Width,Height,Anchor)
第1条命令在整个文档的左上角(默认描点位置)插入一幅外部图片.
第2条命令的作用是指定描点位置,并在距离描点一定位置处插入一幅外部图片.后7个参数不是必需的,可以为空或从后向前忽略某些参数.需要注意的是,参数LinkToFile和SaveWithDocument的值不能同时为0或 False
,但可以同时为空.
例如:
%图片完整路径
>>filename=[matlabroot \toolbox\images\imdemos\football.jpg
];
%在光标位置处插入一幅图片,版式为嵌入式
>>handle1=Selection.InlineShapes.AddPicture(filename);
%在指定位置处加入一幅图片,版式为浮于文字上方
>>handle2=Document.Shapes.AddPicture(filename,[],[],180,50,200,170);
插入图片的效果如图1-24所示.
4.插入内部图片
Word服务器下的很多接口都有Paste和PasteSpecial方法,它们的作用就是将复制到剪贴板的内容粘贴到Word文档中,这里的内容可以是文字、公式、表格和图片等,也可以是外部文件.也就是说只要是能复制到剪贴板的内容,都可以通过Paste和PasteSpecial方法,把它们插入到Word文档中.
![](https://epubservercos.yuewen.com/19D965/16741087904971906/epubprivate/OEBPS/Images/978-7-111-43176-3-Chapter01-158.jpg?sign=1739295879-VNgQvRwk1NkMLlK6OZFQxkDjErjM3V66-0-b605c59c9b24cec91b9b4de4ee4162b0)
图 1-24
![](https://epubservercos.yuewen.com/19D965/16741087904971906/epubprivate/OEBPS/Images/978-7-111-43176-3-Chapter01-159.jpg?sign=1739295879-YKHsACck9A0ZORdKlxinWfcS58UnBwJo-0-89991a4989b9e8b632ba0700abfe0391)
例1-23 调用normrnd函数生成1000个服从标准正态分布的随机数,作出频数直方图,并把它插入到Word文档中.
![](https://epubservercos.yuewen.com/19D965/16741087904971906/epubprivate/OEBPS/Images/978-7-111-43176-3-Chapter01-160.jpg?sign=1739295879-jtQ3HeUjshm2S0zQOCJWerYSeYLtpnjW-0-54e1b81ee1957294071b54b6834afab3)
![](https://epubservercos.yuewen.com/19D965/16741087904971906/epubprivate/OEBPS/Images/978-7-111-43176-3-Chapter01-161.jpg?sign=1739295879-P3GJZRV6Kh4cLNev7NwzIjmC0KFQW9SB-0-a1bcb09c84fd3d4af9fc8a9ab2636a10)
5.设置图片的版式
对于作为Shape对象的图片,可以设置其版式,即文字环绕方向,而对于作为Inline-Shape对象的图片,却不能直接利用MATLAB进行版式设置.需要首先获取某个Shape对象的句柄,它的WrapFormat接口下有一个枚举类型的属性Type,其可能的取值及说明见表1-1.可按如下方式修改Type的属性值:
![](https://epubservercos.yuewen.com/19D965/16741087904971906/epubprivate/OEBPS/Images/978-7-111-43176-3-Chapter01-162.jpg?sign=1739295879-jAwgIs6mrD2F9eUCrsq5P0TmYbTOd1ri-0-09e5ae29c90d87f2c81b4b42b8939138)
表1-1 WrapFormat.Type属性及说明
![](https://epubservercos.yuewen.com/19D965/16741087904971906/epubprivate/OEBPS/Images/978-7-111-43176-3-Chapter01-163.jpg?sign=1739295879-av12OapkNzGpxgTwuDNVnzGgLCIVPWLU-0-6f51036c6d49105e9ce1c35df3d71deb)
6.设置图片叠放次序
对于Shape对象的图片,还可以设置图片的叠放次序.这要用到Shape对象的ZOrder方法,该方法的调用方式为:
>>Document.Shapes.Item(i).ZOrder(MsoZOrderCmd);
该方法的输入参数及说明见表1-2.
表1-2 ZOrder方法的输入参数及其说明
![](https://epubservercos.yuewen.com/19D965/16741087904971906/epubprivate/OEBPS/Images/978-7-111-43176-3-Chapter01-164.jpg?sign=1739295879-iyiZ1qpIYVB8CFmoOquaMHeg3flUrk8U-0-35f62599756cffe758c48857d05281cf)
1.8.5 插入页眉、页码
![](https://epubservercos.yuewen.com/19D965/16741087904971906/epubprivate/OEBPS/Images/978-7-111-43176-3-Chapter01-165.jpg?sign=1739295879-ShnVm0aJ4bsooinqnPbFi48GVop4fYF5-0-bef00b34ffcef05f87ad88888d25df17)
![](https://epubservercos.yuewen.com/19D965/16741087904971906/epubprivate/OEBPS/Images/978-7-111-43176-3-Chapter01-166.jpg?sign=1739295879-ztYgiIFdxxNI3iuID7q6F2bLl5P9pY4V-0-9cb5f4b848720ad0ac8d6b64508a6a02)
1.8.6 保存文档
当整个Word文档设计完成之后,需要把它保存到硬盘上,这要用到Document接口下的SaveAs方法和Save方法,它们的调用方法为
>>Document.SaveAs( FilenameAndPath
);
>>Document.Save;
其中FilenameAndPath字符串用来指定文件名及保存路径.文档第1次保存时,若用Save方法,会弹出一个保存文档的界面,让用户指定文件名和选择保存路径.若用SaveAs方法,默认保存到“我的文档”文件夹.当不指定文件名和路径时,文档被自动命名并保存到“我的文档”文件夹,而只指定路径不指定文件名时,会出现错误.
1.8.7 MATLAB生成Word文档实例
1.用MATLAB生成带有图片的Word文档
![](https://epubservercos.yuewen.com/19D965/16741087904971906/epubprivate/OEBPS/Images/978-7-111-43176-3-Chapter01-169.jpg?sign=1739295879-ldNOl2n55fOOmtPbMtEnkMf1BMajUa5D-0-0c81d222ad401b518f4298c6f669da20)
set(Word, Visible
,1);
%返回Word文件句柄
documents=Word.Documents;
%若测试文件存在则打开该测试文件,否则,新建一个文件并保存,文件名为“测试.doc”
![](https://epubservercos.yuewen.com/19D965/16741087904971906/epubprivate/OEBPS/Images/978-7-111-43176-3-Chapter01-172.jpg?sign=1739295879-5Bg48pZ4tiSHFl0jViAdwWsCyGq5bySn-0-d53fae1d526ae5661e5063f77b97d0a7)
![](https://epubservercos.yuewen.com/19D965/16741087904971906/epubprivate/OEBPS/Images/978-7-111-43176-3-Chapter01-173.jpg?sign=1739295879-Rm6J6r4Laan9tZwhGwiEAB2577ewZlAr-0-acea853d0c7bf6cedc5ac20cb366480e)
2.用MATLAB生成带有表格的Word文档
![](https://epubservercos.yuewen.com/19D965/16741087904971906/epubprivate/OEBPS/Images/978-7-111-43176-3-Chapter01-174.jpg?sign=1739295879-OGu4BBGLj3KaTmqXxNQD7hZADwcRZTM9-0-f3c85e50f19cbb3ac703a327c07011bd)
![](https://epubservercos.yuewen.com/19D965/16741087904971906/epubprivate/OEBPS/Images/978-7-111-43176-3-Chapter01-175.jpg?sign=1739295879-pKwYQB5Ri7uCQ1KMvJbDjmF0xYgbkg5D-0-24cc8675b41dedff1a97a8040ddcfdf4)
![](https://epubservercos.yuewen.com/19D965/16741087904971906/epubprivate/OEBPS/Images/978-7-111-43176-3-Chapter01-176.jpg?sign=1739295879-6iLQqlwqEWorIX1H5J8mPkP2q9wOI6mr-0-e143ffce32e44874d37a664cc8eb0b68)
![](https://epubservercos.yuewen.com/19D965/16741087904971906/epubprivate/OEBPS/Images/978-7-111-43176-3-Chapter01-177.jpg?sign=1739295879-9ZP5fjuSBIaitSxGjhfQisXaNnib4rD5-0-7d36c8128ac17d059f4cbe02fe2cef00)