【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);