0

我有一个具有这种层次结构的文件夹:

Data meteo 
    Avril
         Day1
             file.xls
         Day2
             file.xls
         Day3
             file.xls
    May
         Day1
             file.xls
         Day2
             file.xls
         Day3
             file.xls
    June
         Day1
             file.xls
         Day2
             file.xls
         Day3
             file.xls

我需要读取这些文件夹中的所有文件,然后只选择一些要使用的列并将它们写入具有相同层次结构的另一个目录中。

我是 Matlab 的新手,我试图用这段代码进行测试。

D = 'data meteo';
DESTINATION = "data meteo destination"
S = dir(fullfile(D,'*'));
N = setdiff({S([S.isdir]).name},{'.','..'}); % number of subfolders of D.

for ii = 1:numel(N)
    T = dir(fullfile(D,N{ii},'*')); 
    C = {T([T.isdir]).name}; %
    for jj = 1:numel(C)
        myExcelFile = fullfile(D,N{ii},C{jj});

        %data = xlsread(myExcelFile);

        data1=xlsread(myExcelFile,'A:A');
    data2=xlsread(myExcelFile,'B:B');
    data3=xlsread(myExcelFile,'C:C');
    data4=xlsread(myExcelFile,'E:E');

    data=[data1 data2 data3 data4]

    %print(data)
    xlswrite(DESTINATION,fullfile(D,N{ii},C{jj}));

    end
end

我需要将结果作为相同的层次结构文件夹:

Data meteo Destination 
    Avril
         Day1
             file.xls 
         Day2
             file.xls
         Day3
             file.xls
    May
         Day1
             file.xls
         Day2
             file.xls
         Day3
             file.xls
    June
         Day1
             file.xls
         Day2
             file.xls
         Day3
             file.xls
4

1 回答 1

2

我已经编辑/扩展了你的代码,当我在为它创建的假目录上尝试它时,它似乎实现了我认为你想要的,但看看它是否适合你(但我建议在您的数据的副本 - 以防某些东西不起作用并且它会更改/覆盖原始文件)。

我所做的主要更改是:

  • 添加用于 N= 的 setdiff 函数也用于 C=,忽略“。” 和“..”目录。

  • 更改 myExcelFile 的代码以获取文件本身而不是“Day1”目录

  • 添加在 DESTINATION 目录中创建匹配目录的代码,以保存新文件。

D = 'data meteo';
DESTINATION = 'data meteo destination';
S = dir(fullfile(D,'*'));
N = setdiff({S([S.isdir]).name},{'.','..'}); % number of subfolders of D.

if ~isdir(DESTINATION)
    mkdir(DESTINATION)
end

for ii = 1:numel(N)
    T = dir(fullfile(D,N{ii},'*'));
    C = setdiff({T([T.isdir]).name},{'.','..'}); %

    if ~isdir(fullfile(DESTINATION,N{ii}))
        mkdir(fullfile(DESTINATION,N{ii}))
    end

    for jj = 1:numel(C)

        if ~isdir(fullfile(DESTINATION,N{ii},C{jj}))
            mkdir(fullfile(DESTINATION,N{ii},C{jj}))
        end

        fileList = dir(fullfile(D,N{ii},C{jj},'*.xls*'));
        myExcelFile = fullfile(D,N{ii},C{jj},fileList.name);

        data1=xlsread(myExcelFile,'A:A');
        data2=xlsread(myExcelFile,'B:B');
        data3=xlsread(myExcelFile,'C:C');
        data4=xlsread(myExcelFile,'E:E');

        data=[data1 data2 data3 data4];

        xlswrite(fullfile(DESTINATION,N{ii},C{jj},fileList.name),data);
    end
end
于 2019-08-25T14:44:04.710 回答