本篇同样是为办公人员特别是人事办公准备的,当人员档案等文件需要制作或修改时,利用matlab同word对接实现批量修改
(一)修改内容
第一处:编号
第二处:单位
第三处:姓名
内容可根据需要进行修改
![图1](https://i-blog.csdnimg.cn/blog_migrate/6710da3da667fb9346f42d5466510275.png)
修改内容存在Excel表格中
![](https://i-blog.csdnimg.cn/blog_migrate/e11debd46c38f9ae44959e9a28ca6e00.png)
(二)word模板设计
![](https://i-blog.csdnimg.cn/blog_migrate/d4603fe7bd751bb19fef1ef3488d9ce0.png)
在需要修改的地方添加书签,并编写书签编号,这里我用的是content1,2,3,4,5代表。
(三)关键语句
1、matlab打开word文件
filename= 'C:\Users\19082\Desktop\模板\5岗位信息.docx';
try
Word = actxGetRunningServer('Word.Application');
catch
Word = actxserver('Word.Application');
end;
Document = Word.Documents.Open(filename);
2、将书签接入matlab程序
Bookmarks = Document.Bookmarks; % 返回Bookmarks接口句柄
Selection = Word.Selection; % 返回Selection接口句柄
% 之前添加的书签的名称
marks= { 'content1', 'content2', 'content3', 'content4', 'content5'};
3、对每个书签进行修改
for i = 1: length(marks)
Bookmark = invoke(Bookmarks,'Item',marks{i});
Selection.Start = Bookmark.Start; % 光标移动到书签的位置
if i==1
Selection.Text = recontent1; % 输入内容
elseif i==2
Selection.Text = recontent2; % 输入内容
elseif i==3
Selection.Text =recontent3; % 输入内容
elseif i==4
Selection.Text = recontent4; % 输入内容
elseif i==5
Selection.Text = recontent5; % 输入内容
end
end
(四)附录
clc
clear all
close all
for a=1:21
clearvars -except a
[A,excelname]=xlsread('C:\Users\19082\Desktop\名单.xlsx','A2:G22')
recontent1=num2str(A(a,1))
recontent2=num2str(A(a,2))
recontent3=num2str(A(a,3))
recontent4=char(excelname(a,4))
recontent5=char(excelname(a,1))
cd('C:\Users\19082\Desktop')
% 判断Word是否已经打开,若已打开,就在打开的Word中进行操作,否则就打开Word
filename= 'C:\Users\19082\Desktop\模板\5岗位信息.docx';
try
Word = actxGetRunningServer('Word.Application');
catch
Word = actxserver('Word.Application');
end;
% 设置Word是否可见
% 在调试的时候可以设置为可见,实际运行时设置为不可见更快捷。
Word.Visible = 0;
% 打开模板文件
Document = Word.Documents.Open(filename);
% 返回书签和光标位置的句柄
Bookmarks = Document.Bookmarks; % 返回Bookmarks接口句柄
Selection = Word.Selection; % 返回Selection接口句柄
% 之前添加的书签的名称
marks= { 'content1', 'content2', 'content3', 'content4', 'content5'};
% 开始处理
for i = 1: length(marks)
Bookmark = invoke(Bookmarks,'Item',marks{i});
Selection.Start = Bookmark.Start; % 光标移动到书签的位置
if i==1
Selection.Text = recontent1; % 输入内容
elseif i==2
Selection.Text = recontent2; % 输入内容
elseif i==3
Selection.Text =recontent3; % 输入内容
elseif i==4
Selection.Text = recontent4; % 输入内容
elseif i==5
Selection.Text = recontent5; % 输入内容
end
end
newName = ['5岗位信息',recontent5,'.docx'];
path=['C:\Users\19082\Desktop\工人\',recontent5]
% 文件另存为
cd(path)
Document.SaveAs2([path,'\',newName]);
% 关闭word
end