How to run calculation based on excel files in a folder path via for loop

1 view (last 30 days)
I'm trying to create a GUI that will ask the user for a folder path and do some calculations based on it.
There's anywhere between 1-15 files per folder.
I'm stuck at printing the table output and having matlab ignore any temporary files that starts with ~$
filePattern = fullfile(myFolder, '*.xlsx');
theFiles = dir(filePattern);
for k=1: length(theFiles)
baseFileName= theFiles(k).name;
fullFileName=fullfile(myFolder, baseFileName);
Day{k}=extractBetween(fullFileName,"Day","_");
data1{k} =xlsread(theFiles(k), 2,'F10:end10');
TotalTemp{k}= sum(data1{k});
data2{k} =xlsread(theFiles(k), 3,'A10:end10');
TotalCost{k}= mean(data2{k});
T=table(Day, TotalTemp, TotalCost)
end
  3 Comments
Emily
Emily on 22 Jun 2022
Edited: Walter Roberson on 22 Jun 2022
I was able to update the code to skip the tempoary files.
filelist = dir;
filelist = filelist(~startsWith({filelist.name}, '~$''));
And have updated to readmatrix.
I'm still having trouble getting it to loop and print out the correct output.
for k=1: length(theFiles)
baseFileName= theFiles(k).name;
fullFileName=fullfile(myFolder, baseFileName);
day{k}=extractBetween(fullFileName,"Day","_");
data1{k} =readMatrix(theFiles(k),'Sheet', 'B', 'Range','F10:end10');
data1{k}=rmmissing(data1{k});
total1{k}= sum(data1{k});
data2{k} =readMatrix(theFiles(k),'Sheet', 'C', 'Range','A10:end10');
data2{k}=rmmissing(data2{k});
total2{k}= mean(data2{k});
total3{k}=total1{k}*total2{k}-20;
T=table(day, total1, total2, total3);
end
Walter Roberson
Walter Roberson on 22 Jun 2022
data1{k} =readMatrix(theFiles(k),'Sheet', 'B', 'Range','F10:end10');
theFiles(k) is the struct with the directory entry. You should be passing in the file name, which you stored in fullFileName

Sign in to comment.

Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!