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

1 visualización (últimos 30 días)
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 comentarios
Emily
Emily el 22 de Jun. de 2022
Editada: Walter Roberson el 22 de Jun. de 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 el 22 de Jun. de 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

Iniciar sesión para comentar.

Respuestas (0)

Community Treasure Hunt

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

Start Hunting!

Translated by