Save multiple doubles in different sheets of one excel file

I have different data, each of them are class doubles and have size (300 x 4). How can I save all of them in different sheets of one excel file? I would also like to name every column in every sheet. I had the following in mind, but open to other codes/ways that work.
example of doubles that i have
my_data: size (300 x 4)
your_data : size (300 x 4)
her_data: size (300 x 4)
% example
col_names = {'MA', 'CA', 'PA', 'TL'} % the first row will name every column with these names in every sheet
data_names = {'my_data', 'your_data', 'her_data'} % each are doubles of dimesnion (300 x 4)
for i = length(data_names)
writetable(..,..,'Combined_Data.xlsx','Sheet',strcat(i))
end

8 Comments

Those first two lines will not do what you mean. You need to put curly braces to create a cell array, or put double quotes to create a string array.
Also, the function is called xlswrite (the function name is older than the xlsx file format).
@alphabetagamma: square brackets are a concatenation operator, not a "list" operator (which MATLAB does not have). When you concatenate character vectors together, you get one long character vector. So your code:
col_names = ['MA', 'CA', 'PA', 'TL']
is exactly equivalent to:
col_names = 'MACAPATL'
Understanding what square brackets do is critical to using MATLAB effectively. As Rik wrote, either use a cell array:
{'MA', 'CA', 'PA', 'TL'}
or a string array:
["MA", "CA", "PA", "TL"]
Thank you both for that suggestion. Understood. I wonder if you could tell me how we can actually save the files using the for loop?
How are you changing "combined_data" in the loop so that it's not the same every time? What do you want to change? How are col_names and data_names going to be used in the loop?
i'm not sure. That's why I am asking.
col_names are there because when I save the data, I want to name the columns of the dataset in each sheet.
I don't know how to use, or if I should use it in the first place.
The purpose is to simply save each double in separate sheets of one excel file, and name the columns.
YourTable.Properties.VariableNames = col_names;
writetable(YourTable, 'Combined_Data.xlsx', 'Sheet', i)
Thanks, but how do I get "YourTable". I only have separate "doubles" to begin with

Sign in to comment.

Answers (1)

Hello,
I understand that you want to save your array data into different sheets of one excel file. One way to do this is using a combination of “writetable()” and “array2table()” MATLAB functions with simple looping techniques.
I have modified your code according to my logic.
% Example data
my_data = rand(300, 4);
your_data = rand(300, 4);
her_data = rand(300, 4);
% Column names for each sheet
col_names = {'MA', 'CA', 'PA', 'TL'};
% Data names and corresponding data matrices
data_names = {'my_data', 'your_data', 'her_data'};
data_matrices = {my_data, your_data, her_data};
% Create a new Excel file
filename = 'Combined_Data.xlsx';
delete(filename);
% Loop through each data set and save it in a separate sheet
for i = 1:length(data_names)
data = data_matrices{i};
sheet_name = data_names{i};
% Convert data to a table and assign column names
data_table = array2table(data, 'VariableNames', col_names);
% Write the table to the Excel file
writetable(data_table, filename, 'Sheet', i);
end
Here, we use the “array2table()” function to convert the matrix into a table and assign a column name to it. Finally we use the “writetable()” function to save the table into the excel sheet.
Hope this helps!

Tags

Asked:

on 28 Jul 2022

Answered:

on 3 Oct 2023

Community Treasure Hunt

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

Start Hunting!