How to append data into an Excel File when writing data in a loop.?

21 views (last 30 days)
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.

Answers (1)

Madheswaran
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!

Community Treasure Hunt

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

Start Hunting!