How to append data into an Excel File when writing data in a loop.?
22 views (last 30 days)
Show older comments
I am writing an complex double 10X1 variable X into an excel file inside a loop. The value of X updates for every iteration of the loop. But the data keeps getting over written. The values inside the complex double X are being to every row in a particular column of the excel sheet. See below for the code.
for i = 1:44
% code to calculate the value of X
R(1,1:length(X))=X;
xlswrite(write_file,R');
end
So for column A of the excel sheet, in the row 1 to 10 (A1 to A10) the data within X gets written in the first loop. Then during the 2nd time it gets re-written on top of the old data and so on.
0 Comments
Answers (1)
Madheswaran
on 13 Nov 2024 at 11:47
Hi
The 'xlswrite' function is not recommended starting from MATLAB R2019a. To write a column vector into an Excel file, you can use the 'writematrix' function.
If you want to append all the values in a single column, you can use the 'WriteMode' parameter set to 'append':
for i = 1:44
% existing code to calculate the value of X
writematrix(X, filename, 'WriteMode', 'append');
end
However, if you would like to append each of the column vectors in separate columns, you can modify your loop as follows:
function colName = getColumnName(colNumber)
colName = "";
while colNumber > 0
modulo = mod(colNumber - 1, 26);
colName = char('A' + modulo) + colName;
colNumber = floor((colNumber - modulo) / 26);
end
end
for i = 1:44
% existing code to calculate the value of X
colName = getColumnName(i);
writematrix(X, filename, 'Range', sprintf('%s1', colName));
end
The above function 'getColumnName' converts integer to Excel Column name. For more information on 'writetable', refer to the following documentation: https://mathworks.com/help/matlab/ref/writetable.html
Hope this helps!
0 Comments
See Also
Categories
Find more on Spreadsheets in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!