MATLAB Answers

How to save multiple tables in seperate sheets in Excel

189 views (last 30 days)
Victoria
Victoria on 13 Jul 2018
Commented: Benjamin Drewry on 2 Dec 2019
Hello - I am running multiple files in MATLAB and would like to save the outputs from regionprops into one large Excel file. With my current code, which is below, it will only save as seperate .txt files. Help is appreciatied - thank you!
figure,imshow(BW);
stats = regionprops(BW,'MajorAxisLength');
t = struct2table(stats);
path = 'C:\Users\Test' ;
filename = [path, filesep, 'GFP',num2str(k)] ;
writetable(t,filename);
end
k stands for k=1:length(Files)

  1 Comment

Benjamin Drewry
Benjamin Drewry on 2 Dec 2019
Victoria,
Just use the writetable function with the name-value pair 'Sheet', number.
i.e. writetable(t, 'fName.xlsx', 'Sheet', 4);
Thanks,
Ben

Sign in to comment.

Answers (2)

Christopher Wallace
Christopher Wallace on 13 Jul 2018
Hi Victoria,
Have you looked into the documentation for the Matlab command 'xlswrite' ?
https://www.mathworks.com/help/matlab/ref/xlswrite.html
?
You should be able to do something along the lines of:
xlswrite(filename, data, 'Sheet1')
But since the xlswrite function only accepts two-dimensional numeric, character array, or string array, or, if each cell contains a single element, a cell array, you'll have to reformat your data before putting it in.
?
If you'd like to add a new sheet just change the name of the sheet in the xlswrite parameters. If it the sheet doesn't exist it will be created.
?
Best Regards,
Chris

  9 Comments

Show 6 older comments
Christopher Wallace
Christopher Wallace on 13 Jul 2018
Is 'MajorAxisLength' the only property you're wanting to record in the file? So you would have 'MajorAxisLength' in the top row followed by the data for each image in a new row below?
Consider taking the write function out of the for-loop and adding k to the stats variable
stats(k) = regionprops(BW,'MajorAxisLength');
then do the write once the for-loop is complete.
adding Paolo's answer in as well you would end up with something like:
figure,imshow(BW);
stats(k) = regionprops(BW,'MajorAxisLength');
t = struct2table(stats);
end
path = 'C:\Users\Test';
writetable(t,fullfile(path,filename));
Victoria
Victoria on 13 Jul 2018
I got this error when I tried that:
Unable to perform assignment because the indices on the left side are not compatible with the size of the right side.
And yes, Major Axis Length is the only one I'd like right now.
Thanks for the help

Sign in to comment.


Peter Perkins
Peter Perkins on 3 Aug 2018
Victoria, I really recommend that you not use xlswrite. As Paolo suggests, writetable can definitely write to sheets in an Excel file.

  0 Comments

Sign in to comment.