查看: 2806|回复: 2|关注: 0

[已解决] 如何让一个文件夹下所有的excel数据读入呢?

[复制链接]

新手

36 麦片

财富积分


050


33

主题

72

帖子

0

最佳答案
  • 关注者: 1
%读取目录下所有的xls表格
clear
clc
xlsstr={};
xlsdata={};
a=dir;        %读入目录下文件信息存储为结构体形式
b=struct2cell(a);  %将格式转为cell形式
c=b(1,:);        %取出其中文件名单元
[h,l]=size(c);   %计算文件个数
jj=0;             %xls文件数
for ii=1:l
    if strfind(c{ii},'.xls')    %如果是xls文件格式 注意括号要使用cell的括号
        jj=jj+1;
        [xlsstr{jj},xlsdata{jj}]=xlsread(c{ii});
    end
end



以上代码可以实现文件夹下所有的excel文件被读入,但是存在的问题是只能读取第一个sheet,假如其中一个或者几个excel含有多个sheet,怎样修改代码使得它能够全部读入呢?

论坛优秀回答者

中级

1105 麦片

财富积分


5001500


19

主题

1978

帖子

253

最佳答案
  • 关注者: 41
发表于 2017-12-19 17:55:59 | 显示全部楼层 |此回复为最佳答案
先用xlsinfo确定有多少个sheet要读
[Type Sheet Format]=xlsfinfo('file1.xls');
循环读每个Sheet
for i = 1:length(Sheet)
    A = xlsread('file1.xls',Sheet{i});
    .....
    (处理数据)
end

新手

36 麦片

财富积分


050


33

主题

72

帖子

0

最佳答案
  • 关注者: 1
 楼主| 发表于 2017-12-20 21:17:59 | 显示全部楼层
sammymx 发表于 2017-12-19 17:55
先用xlsinfo确定有多少个sheet要读
[Type Sheet Format]=xlsfinfo('file1.xls');
循环读每个Sheet

谢谢啦  已解决,我的方案:
%读取目录下所有的xls表格
clear
clc
xlsstr={};
xlsdata={};
a=dir;           %读入目录下文件信息存储为结构体形式
b=struct2cell(a);%将格式转为cell形式
c=b(1,:);        %取出其中文件名单元
[m,n]=size(c);   %计算文件个数
jj=0;            %xls文件数
for ii=1:n
    if strfind(c{ii},'.xls')    %如果是xls文件格式 注意括号要使用cell的括号
        excelname=[c{ii}];
        [status,sheets,xlFormat] = xlsfinfo(excelname);
        [p,q]=size(sheets);
        for i =1:q
            temp(i).data=xlsread(excelname,i);  %i对应不同的sheet,将其中数据读入到matlab中
        end
        ANS=c{ii};
        eval([ANS '=temp'])
        time=BMS0Data.xls.data(:,1)%时间提取
        
        jj=jj+1;
        [xlsstr{jj},xlsdata{jj}]=xlsread(c{ii});%xlsdata{jj}为表头名称
    end
end
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /3 下一条

快速回复 返回顶部 返回列表