用matlab对excel中数据选择性染色

在网上找了n久,都没有找到实现这个功能的代码,于是结合各位大佬提供的功能码块,自己拼接出了具有:能够选择指定excel表中满足某个算术条件的单元格,并且对其染色的脚本
欢迎纠错,另外有小伙伴拓展了其他功能的话,欢迎留言在评论区~

  • 数字转字母的函数letter2char:
function str=letter2char(num)
s=num+64;
str=char(s);%因为char(65)=A
  • 需要分块的函数lettertoxls:
function s=lettertoxls(Integer0);%matlab中的函数定义
    if (Integer0<=26)   %若只有单个字母
        s=letter2char(Integer0); %转化成字母
    elseif(Integer0<=702 && Integer0>26)%不止单个字母,比如AA,BF等。702刚好到两位的最后一个列号:ZZ
        Integer1 = fix(Integer0/26);
        while(Integer0>26)
            Integer0=Integer0-26;
        end
        a=letter2char(Integer1);
        b=letter2char(Integer0);
        s=strcat(a,b);
    end
end
  • 选择并染色:
clear;
[a,b,c]=xlsread("C:\Users\HUAWEI\Desktop\4.xlsx");%这里打开是为了在表格中筛选符合条件的数据
for i=1:50  %数据寻找范围
    for j=1:29  %数据寻找范围(注意不能超过一开始读入的范围)
        if(a(i,j)>=100)
            str2=int2str(i);%int to str行数当作字符
            lie=**lettertoxls**(j);%列转换成ABC这样子
            poistion=strcat(lie,str2);%字符串连接函数,[列,行]。如A1单元格
         **   %这里只能用strcat拼接,若果用[]拼接,形成的是str类型,不适用于下文Range中参数类型,而strcat拼接出来的是cell。**
            rgb = [255 0 0];
            e = actxserver('Excel.Application');%这里是建立服务端('Excel.Application'是指excel的服务端,和上面打开表格不重复不矛盾)                                        
            ewb = e.Workbooks.Open("C:\Users\HUAWEI\Desktop\4.xlsx");
            ewb.Worksheets.Item(1).Range(poistion).Interior.Color = rgb*256.^(0:2)';%红色
            %poistion不加引号
            ewb.Save;                                                               
            ewb.Close(false);
            e.Quit;
            e.delete;
         end
     end
 end
  • 实现效果

posted @ 2021-09-05 09:43  py佐料  阅读(603)  评论(0编辑  收藏  举报