用matlab读取excel文件

最近在用matlab处理采集到的数据,这些数据都是按照一定的格式存入excel文件中的,每天对应产生一个文件。这些表格数量较多,所以通过matlab进行批量读取和处理。

在读取过程最重要的函数是xlsread函数,使用该函数可以方便的读取excel文件的数值、文本等,

num = xlsread(filename,sheet,xlRange)

通过这条函数可以获取指定文件指定表的指定范围的数值。为了能够循环读取,可以构造filename,读取多个文件。

%% 获得指标数据

yue = 7; %
A=[];
B=[];
num=[31,28,31,30,31,30,31,31,30,31,30,31];

xlRange =[ {'S2'},{'B3'},{'l26'},{'j28'},{'q26'}];
% 
tic
for xx=1:1:length(xlRange);%5个数据
    A=[];
    for mon=1:1:yue;
        for day=1:1:num(mon);
        filename=['2018年',num2str(mon),'月', num2str(day),'日指标.xls']
        sheet = '日报';    
        subsetA= xlsread(filename,sheet,char(xlRange(xx)));
        if(isempty(subsetA))
            subsetA=NaN;
        end 
        A=[A;subsetA];
        end
    end
B=[B A];   
end
toc

解决了需要从多个表里找数据的问题,另外可以通过下面的方法读取表格的文本数据

[num,txt,raw] = xlsread(___)

在使用时发现这样读取文件特别费时,为了能够快速处理,打算将所有的文件读入内存,在内存里查找需要的数据

clear
clc

yue = 7; %
num=[31,28,31,30,31,30,31,31,30,31,30,31];
sheet = {'0点班 ','8点班','16点班','日报'}; 
BO=cell(2,length(sheet));
tic
 for xx=1:1:length(sheet);%
    nu=[];tx=[];id=0;nid=0;tid=0;
    for mon=1:1:yue;
        for day=1:1:num(mon);
            filename=['2018年',num2str(mon),'月', num2str(day),'日指标.xls']
            [number,txt] = xlsread(filename,char(sheet(xx)) );
            [len1 sz1]=size(nu);
            [len2 sz2]=size(number);
            len=len2-len1;
            if(len>0)
             nu=[nu;NaN(len,sz1)];   
            end
            if(len<0)
             number=[number;NaN(-len,sz2)];   
            end
            nu=[nu number];%tx=[tx txt];%向右
            id=id+1;[n nid(id+1)]=size(nu);[n tid(id+1)]=size(tx);
        end
    end
    tid(id+1)=[]; nid(id+1)=[];

	BO{1,xx}=nu;BO{2,xx}=nid;
    
 end
toc

效果不错,读取文件之后速度飞快。解决目前处理数据的数据获取难题。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值