2011-11-30 34 views
0

我有4个文件夹,每个文件夹包含几个(> 10)excel电子表格。如何将每个电子表格的最后一个工作表提取到matlab中?因此,在matlab中,数据将是一个单元格将代表一个文件夹,并在该单元格中,你将拥有每个文件夹的内容,即每个电子表格的最后一个工作表的数据?matlab几个excel文件

欢呼

回答

2

使用XLSFINFO功能。它确定该文件是Excel电子表格,会给你所有工作表的列表,并且还可以检测到excel文件格式。

[status,sheets,format] = xlsfinfo(filename); 
if ~isempty(status) 
    lastsheet = sheets{end}; 
end 

一旦你知道最后一个工作表名称,你可以使用XLSREAD从中获取数据。

[num,txt,raw] = xlsread(filename,lastsheet); 

使用DIR来收集文件夹中的文件名。


UPDATE

入住此脚本:

folders = {'test1','test2'}; 
DATA = cell(numel(folders),1); 

for fo = 1:numel(folders) 
    files = dir(folders{fo}); %# get array fo all files in a folder 
    files([files(:).isdir]) = []; %# remove directories from the structure array 
    DATA{fo} = cell(numel(files),1); 
    for fi = 1:numel(files) 
     filename = fullfile(folders{fo},files(fi).name); 
     disp(filename) 
     [status,sheets] = xlsfinfo(filename); 
     if ~isempty(status) 
      lastsheet = sheets{end}; 
      [num,txt,raw] = xlsread(filename,lastsheet); 
      DATA{fo}{fi} = num; %# or txt, or raw 
     end 
    end 
end