function str=letter2char(num)
s=num+64;
str=char(s);%因为char(65)=A
end
(2) 自定义函数2:给出行数和列数能够转换为excel中的位置,例如’A1’或者’AB1’
function s=lettertoxls(Integer0)%matlab中的函数定义
if(Integer0<=26)%若只有单个字母
s=letter2char(Integer0);%转化成字母
elseif(Integer0<=702&& Integer0>26)%不止单个字母,比如AA,BF等。702刚好到两位的最后一个列号:ZZ
Integer1 =fix(Integer0/26);%取商
ifmod(Integer0,26)==0
Integer1 =fix(Integer0/26)-1;%避免出现从AY直接到BZ的现象
end
while(Integer0>26)
Integer0=Integer0-26;
end
a=letter2char(Integer1);
b=letter2char(Integer0);
s=strcat(a,b);
end
end
2.在matlab中建立服务端,并在excel中完成对指定位置数据的修改
e =actxserver('Excel.Application');%这里是建立服务端('Excel.Application'是指excel的服务端,和上面打开表格不重复不矛盾)
ewb = e.Workbooks.Open(path_3);%path_3为excel表格的路径,填写自己的路径
for i=1:100%%对行进行循环,根据自己的起始行数进行修改
for j=1:50%对列进行循环,根据自己的起始列数进行修改
str2=int2str(i);%int to str行数当作字符
lie=lettertoxls(j);%列转换成ABC这样子
poistion=strcat(lie,str2);%字符串连接函数,[列,行],如A1单元格,这里只能用strcat拼接,若果用[]拼接,形成的是str类型,不适用于下文Range中参数类型,而strcat拼接出来的是cell。
ifisnan(ewb.Worksheets.Item('Sheet4').Range(poistion).Value)%判断该表的位置是否为NaN
ewb.Worksheets.Item('Sheet4').Range(poistion).Value=0;%将NaN赋值为0
end
end
end
ewb.Save;% 保存工作簿
ewb.Close(false);% 关闭工作簿
e.Quit;% 退出工作簿
e.delete;% 删除对象