zoukankan      html  css  js  c++  java
  • 用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:UsersHUAWEIDesktop4.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:UsersHUAWEIDesktop4.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
    
    • 实现效果

    这篇文章,是又一个故事的结束...
    lazy's story is continuing.
  • 相关阅读:
    素数
    超级素数
    SUMMARIZE 6.1
    广度优先搜索与八字码问题
    poj2352
    poj1198
    康托展开
    STL里的内存池实现
    构造函数,C++内存管理,内存泄漏定位
    内联函数,宏定义,内存对齐,类型转换
  • 原文地址:https://www.cnblogs.com/Hello-world-hello-lazy/p/15228690.html
Copyright © 2011-2022 走看看