How to save output of for loop (table) into excel sheet?
12 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Ebtesam Farid
le 22 Mai 2021
Commenté : Ebtesam Farid
le 23 Mai 2021
Good afternoon all,
I am working on Ascii files, I create a for loop (of 365 iterations = no of files) that reads a specific coulmn from ascii files, and because there are some files that has a coulmn legnth that differ from the others I couldn't save the output of the loop into matrix so I saved it as table, my problem now that I couldn't export this table into excel sheet (I used writetable function)
here is my code
clear
clc
for k=01:365
try
filename = sprintf('iqac%03d0.tro',k);
fid=fopen(filename, 'r'); %# open the file in this Path
ZTD = textscan(fid,'%*s %*s %f %f %*[^\n]','HeaderLines',14);
data = cell2mat(ZTD);
zhd = data(:,1);
zwd = data(:,2);
ztd = zhd + zwd;
mat{:,k} = ztd;
mat1=cell2table(mat);
fclose(fid);
catch ME
disp('An error occurred while processing the files.');
disp('Execution will continue.');
continue
end
end
writetable(mat1,'ztd1.xlsx', 'Sheet', 'ztd');
every time I run the code, I had an error message said that the table size exceed the sheet boundary, although when I run it and save the output as matrix into excel I didn't have such error.
I attached sample of files as an example
0 commentaires
Réponse acceptée
Sulaymon Eshkabilov
le 22 Mai 2021
Hi,
There are several errs in your code, k = 1:5 not 1:365. In your case writetable() is not the best option to employ with your data. It is easier to use writematrix() - see the whole code below.
RANGE =[{'A2:A3000', 'B2:B3000', 'C2:C3000', 'D2:D3000', 'E2:E3000'}];
for k=1:5
try
filename = sprintf('iqac%03d0.tro',k);
fid=fopen(filename, 'r'); %# open the file in this Path
ZTD = textscan(fid,'%*s %*s %f %f %*[^\n]','HeaderLines',14);
data = cell2mat(ZTD);
zhd = data(:,1);
zwd = data(:,2);
ztd = zhd + zwd;
fclose(fid);
writematrix(ztd,'ZTD1.xlsx' , 'Sheet',1, 'Range',RANGE{k})
catch ME
disp('An error occurred while processing the files.');
disp('Execution will continue.');
continue
end
end
Good luck.
7 commentaires
Sulaymon Eshkabilov
le 23 Mai 2021
You don't have to type in all these which can be generated automatically using an addtional loop code, for instance.
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Variables dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!