matlab 2018 将结果写入word 心得

        为了提高学习效率,我计划将matlab脚本生成的图形和文字写入到word中,这样就不用我一个一个的手动粘贴了。然而,从csdn上搜索了很多资料,不能完全解决我的问题。很多文章都是类似的内容。有很多代码,明明实际跑起来是有问题的,我不懂为什么还要贴上,当然也可能是我太贪心,想拿来主义,反正现在的东西不是直接拿来就能用。正好,我也开始记录自己的鼓捣过程,方便自己以后学习参考。有些事过得时间长了就忘了怎么搞了。

参考博客:

https://blog.csdn.net/modeganqingi/article/details/125507688?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169198497716800222885852%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=169198497716800222885852&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-9-125507688-null-null.142^v92^insert_down28v1&utm_term=matlab%20%E4%BF%9D%E5%AD%98%E5%9B%BE%E7%89%87%E5%88%B0word&spm=1018.2226.3001.4187icon-default.png?t=N6B9https://blog.csdn.net/modeganqingi/article/details/125507688?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169198497716800222885852%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=169198497716800222885852&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-9-125507688-null-null.142^v92^insert_down28v1&utm_term=matlab%20%E4%BF%9D%E5%AD%98%E5%9B%BE%E7%89%87%E5%88%B0word&spm=1018.2226.3001.4187        这篇博客写的比较详细了,是我找到的文章中比较好的了。然而,这些代码也不是拿来就用。其中问题最大的就是:

Selection.Start = Content.end;

        这句话不能随便乱插,原文章中多次使用这行代码,每次运行都和我自己想要的结果不一样。我就很奇怪,经过几个小时的摸索,终于发现,这个行代码的意思是:将选择的起始点设置在标题后。这就是问题的原因之一。

        仔细断点调试代码发现每次选中的文字、图片都有问题。从网上也没找到什么好的方法。matlab官方文档也没有找到合适的帮助文件。后来还是自己突然想了一个方法解决了这个问题。下边贴代码,原理搞明白,套用就方便多了。

PS:很多代码都是上篇博客的内容,我只更改了一些运行不畅的内容。

clc
clear
close all


try
    Word = actxGetRunningServer('Word.Application');
catch
    Word = actxserver('Word.Application');
end
Word.Visible = 1; 	% 使word为可见;或set(Word, 'Visible', 1);

%利用MATLAB生成Word文档
filespec_user = [pwd '\飞行数据分析.doc'];% 设定测试Word文件名和路径

if exist(filespec_user,'file')
    Document = Word.Documents.Open(filespec_user);
else
    Document = Word.Documents.Add;
    Document.SaveAs2(filespec_user);
end


Content = Document.Content;
Selection = Word.Selection;
Paragraphformat = Selection.ParagraphFormat;


Document.PageSetup.TopMargin = 60;
Document.PageSetup.BottomMargin = 45;
Document.PageSetup.LeftMargin = 45;
Document.PageSetup.RightMargin = 45;

headline = '飞行数据分析报告';
Content.Start = 0; 			% 起始点为0,即表示每次写入覆盖之前资料
Content.Text = headline;
Content.Font.Size = 20; 	% 字体大小
Content.Font.Bold = 1; 		% 字体加粗
Content.Paragraphs.Alignment = 'wdAlignParagraphCenter';
% 居左 	wdAlignParagraphLeft
% 居中	wdAlignParagraphCenter
% 居右 	wdAlignParagraphRight
Selection.start=Content.end;
Selection.TypeParagraph;	% 插入一个新的空段落
Selection.Font.Size = 10.5;	% 新的空段落字号
Selection.Text = '第三行';
Selection.MoveDown;             % 此时这一行还在选中状态,加此命令令选中状态退出

Selection.TypeParagraph;	% 换行,插入一个新的空段落
Selection.Font.Size = 10.5;	% 新的空段落字号
Selection.Text = '第四行';
Selection.Start =Selection.start+3; %因为插入了3个字符,所以加3好了,光标就在后面,且不会有选中状态

Selection.TypeParagraph;	% 换行,插入一个新的空段落
Selection.Font.Size = 10.5;	% 新的空段落字号
Selection.Text = '第五行';
Selection.MoveDown;              %结束本行选中状态

Selection.TypeParagraph;	% 换行,插入一个新的空段落
currentdate = datestr(now, 0);  % 获取当前时间
Selection.Text = currentdate;   % 当前时间作为输出
Selection.Font.Size = 12;       % 字号
Selection.Font.Bold = 0;        % 不加粗
Selection.MoveDown;             %将所选内容向下移动,并返回移动距离的单位数


f1=figure;		% 记录其句柄
x=0:0.02:10;
y=cos(x);
plot(x,y,'r')
ylabel('cos');title('cos(rad)');
set(gcf,'Position',[100 100 260 220]);  %这一句话将图片变小点,避免插入word会很大,显示不全

Selection.TypeParagraph;	% 换行,插入一个新的空段落
hgexport(f1, '-clipboard');	%figure的句柄为“f1”
% Selection=Word.Selection;
Selection.Range.Paste;		%在当前光标的位置插入图片
Selection.Start =Selection.start+1; %将光标移到后边,插图图片后,光标会在图片前面,所以移动下光标
Selection.MoveDown;             %将所选内容向下移动,并返回移动距离的单位数
Selection.TypeParagraph;	% 换行,插入一个新的空段落

Selection.Text = '图1 cosx的曲线';
Paragraphformat.Alignment = 'wdAlignParagraphCenter';	%居中显示
Selection.MoveDown;
Selection.TypeParagraph;% 插入一个新的空段落

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值