อ่านไฟล์ xls จากโฟลเดอร์ differente และเขียนบน MATLAB

ฉันมีโฟลเดอร์ที่มีลำดับชั้นนี้:

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

person Dr. Mza    schedule 25.08.2019    source แหล่งที่มา
comment
คุณได้รับข้อผิดพลาดอะไร?   -  person Yuval Harpaz    schedule 25.08.2019


คำตอบ (1)


ฉันได้แก้ไข/ขยายโค้ดของคุณแล้ว และดูเหมือนว่าจะบรรลุสิ่งที่ฉันคิดว่าคุณต้องการเมื่อฉันลองใช้กับไดเร็กทอรีปลอมที่ฉันสร้างขึ้น แต่ลองดูว่ามันเหมาะกับคุณหรือไม่ (แต่ฉันขอแนะนำให้ทดสอบกับ สำเนาข้อมูลของคุณ - ในกรณีที่มีบางอย่างใช้งานไม่ได้และมีการเปลี่ยนแปลง/เขียนทับไฟล์ต้นฉบับ)

การเปลี่ยนแปลงหลักที่ฉันทำคือ:

  • เพื่อเพิ่มฟังก์ชัน setdiff ที่คุณใช้สำหรับ N= สำหรับ 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
person Craig Arnold    schedule 25.08.2019