【1.2.4 OLE方式写入Word】Matlab文件输出

Matlab案例代码解析

1. 基础函数使用案例

1.2 文件读写

1.2.4 OLE方式写入Word

clear;clc;
% Matlab 操作 Word 文档
% 设置文件保存路径
filepath = [pwd, '\test.docx'];  
% 检查 Word 是否已经打开
    % 若 Word 服务器已经打开,返回其句柄
    word = actxGetRunningServer('Word.Application');
catch
    % 创建一个Microsoft Word服务器
    word = actxserver('Word.Application'); 
% 设置 word 属性为可见,0表示不可见
% set(word, 'Visible', 1);
word.Visible = 1;    
% 检查文件是否存在
if exist(filepath, 'file')
    document = word.Documents.Open(filepath);     
    % document = invoke(word.Documents, 'Open', filepath);
    document = word.Documents.Add;     
    % Document = invoke(word.Documents, 'Add'); 
    document.SaveAs2(filepath);
% 句柄获取
content = document.Content;
selection = word.Selection;    
paragraphFormat = selection.ParagraphFormat;  
% 页面设置
% 上边距60磅
document.PageSetup.TopMargin = 60;  
% 下边距45磅
document.PageSetup.BottomMargin = 45;   
% 左边距45磅
document.PageSetup.LeftMargin = 45;     
% 右边距45磅
document.PageSetup.RightMargin = 45;       
content.Text = 'test word';
% 设置文档内容的起始位置
content.Start = 0;     
% 设置字号为16
content.Font.Size = 16 ;   
% 字体加粗
content.Font.Bold = 4 ;    
% 居中对齐
content.Paragraphs.Alignment = 'wdAlignParagraphCenter';    
% 设置下面内容的起始位置
selection.Start = content.end;   
% 回车,另起一段
selection.TypeParagraph;    
% 在当前位置输入文字内容
selection.Text = '文字内容1';  
% 设置字号为12
selection.Font.Size = 12;   
% 字体不加粗
selection.Font.Bold = 0;    
% 光标下移(取消选中)
selection.MoveDown;         
% 居中对齐
paragraphFormat.Alignment = 'wdAlignParagraphCenter';    
selection.TypeParagraph;    
selection.TypeParagraph;    
selection.Font.Size = 11; 
% 在光标所在位置插入一个 4 行 3 列的表格
tables = document.Tables.Add(selection.Range, 4, 3);    
% 返回第1个表格的句柄
table = tables;
% table = document.Tables.Item(1);   
% 设置表格边框
table.Borders.OutsideLineStyle = 'wdLineStyleSingle';
table.Borders.OutsideLineWidth = 'wdLineWidth150pt';
table.Borders.InsideLineStyle = 'wdLineStyleSingle';
table.Borders.InsideLineWidth = 'wdLineWidth150pt';
table.Rows.Alignment = 'wdAlignRowCenter';
table.Rows.Item(2).Borders.Item(1).LineStyle = 'wdLineStyleNone';
% 设置表格列宽和行高
columnWidth = [50, 50, 200];    
rowHeight = [20, 25, 20, 200];    
for i = 1 : 3
    table.Columns.Item(i).Width = columnWidth(i);
% 设置表格的行高
for i = 1 : 4
    table.Rows.Item(i).Height = rowHeight(i);
% 设置每个单元格的垂直对齐方式
for i = 1 : 4
    for j = 1 : 3
        table.Cell(i,j).VerticalAlignment = 'wdCellAlignVerticalCenter';
% 合并单元格
table.Cell(1, 2).Merge(table.Cell(1, 3));
table.Cell(2, 2).Merge(table.Cell(3, 3));
table.Cell(4, 1).Merge(table.Cell(4, 3));
selection.Start = content.end;    
selection.TypeParagraph;         
selection.Text = '文字内容2';    
% 右对齐
paragraphFormat.Alignment = 'wdAlignParagraphRight';    
selection.MoveDown;   
% 写入表格内容
table.Cell(1, 1).Range.Text = '内容1';
table.Cell(3, 1).Range.Text = '内容2';
table.Cell(1, 1).Range.ParagraphFormat.Alignment = 'wdAlignParagraphLeft';
table.Cell(3, 1).VerticalAlignment = 'wdCellAlignVerticalTop';
table.Cell(1, 1).Borders.Item(2).LineStyle = 'wdLineStyleNone';
table.Cell(1, 1).Borders.Item(4).LineStyle = 'wdLineStyleNone';
% 如果当前工作文档中有图形存在,通过循环将图形全部删除
shape = document.Shapes;  
% 返回文档中Shape对象的个数
shapeCount = shape.Count;   
if shapeCount ~= 0
    for i = 1 : shapeCount
        shape.Item(1).Delete;  
fig = figure;
% 设置 fig 尺寸且不可见
set(fig, 'Position', [400, 400, 300, 300], 'visible', 'off')
% z = peaks(40);   % 这么写图片空白
peaks(40);      
% 图形复制
hgexport(fig, '-clipboard');
% 图形粘贴
% Selection.Range.PasteSpecial;
table.Cell(8,1).Range.Paragraphs.Item(1).Range.Paste;
% 删除图形句柄
delete(fig);