How to save output of for loop (table) into excel sheet?
14 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Ebtesam Farid
am 22 Mai 2021
Kommentiert: Ebtesam Farid
am 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 Kommentare
Akzeptierte Antwort
Sulaymon Eshkabilov
am 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 Kommentare
Sulaymon Eshkabilov
am 23 Mai 2021
You don't have to type in all these which can be generated automatically using an addtional loop code, for instance.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Variables finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!