How to save tables to different sheets in one xlsx file?

58 views (last 30 days)
Hello everyone,
i have a for loop reading several files and doing some calculations for each of them. What i want to do is to save the results from every file in a seperate sheet on one excel file.
%% reading the files
files = dir('*.txt');
N=length(files);
for i=1:N
filename=files(i).name;
fid=fopen(filename);
data = textscan (fid, '%s %s %s %s %s %s %s %*s %*s %s %*s', 'headerLines', 2);
%%saving
R1=table (Time, beta, Sh, K, 'VariableNames' , {'Time', 'beta', 'Sh', 'K'});
F_xlsx=sprintf('results.xlsx');
writetable(R1,F_xlsx,'Sheet',[files(i).name]);
this is how i tried, but the it is filling the sheet only with the first file.
  1 Comment
Andy
Andy on 3 Sep 2019
from the Matlab documentation "wrtitetable(T) writes table T to a comma delimited text file." As far as I am aware, this format doesn't support multiple sheets. I have used xlswrite when writing to Excel as you can define the sheet to be written to.

Sign in to comment.

Accepted Answer

Nicolas B.
Nicolas B. on 3 Sep 2019
Have you done a step-by-step execution of your code to be sure that there are multiple files read?
Looking at it like that, I would just remore the square brakets to the sheet name:
writetable(R1,F_xlsx,'Sheet',files(i).name);
Personnally, I'm using writematrix() the same way on different tables without any problem.
  4 Comments
Niya Bedzheva
Niya Bedzheva on 3 Sep 2019
everything is perfect now. Thank you very much for the help! :)
FM
FM on 13 Jul 2022
I should have known better than to try exporting the CSV and writing VBA to import multiple files into different sheets within a common workbook. What a nightmare. This is a much more elegant solution, by orders of magnitude.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!