How can i save multiple sets on data from MATLAB App Designer to excel?

So i have created a call back function for my 'save data' edit text box. So when the user presses the 'save data' button the data from the simulation is saved to an excel file and this is my code below. However if i run multiple simulations and press 'save data' the data is saved on top of the original values and so it only saves one set of data each time.
I wanted to know how to save multiple data sets one after another, underneath one another, every time the user presses 'save data'.
Thanks in advance, Grace

 Akzeptierte Antwort

Ameer Hamza
Ameer Hamza am 10 Mai 2020
Bearbeitet: Ameer Hamza am 10 Mai 2020
See the 'Range' option of writetable(): https://www.mathworks.com/help/releases/R2020a/matlab/ref/writetable.html#d120e1378251. You can create a property in the app to store the current row. Increment it after each callback and use it to specify the row in excel file.
For example, if the row number is 5, then you can use something like this
writetable(t, 'filename', 'Range', ['A', num2str(5)])

12 Kommentare

Thankyou!!
when doing this i get this data:
is there any way of not repeating the value titles?
You can also pass 'WriteVariableNames' property to writetable to avoid writing the variable names.
writetable(t, 'filename', 'Range', ['A', num2str(5)], 'WriteVariableNames', false)
Also, I write five just as an example, you should create a property named row_number in your app and then use it to specify the row number. For example
writetable(t, 'filename', 'Range', ['A', num2str(row_number)], 'WriteVariableNames', false)
row_number = row_number+1;
Thanks and is it possible to create a while function to keep outputting data to excel, everytime 'save data' is pressed?
Why do you need to use a while-loop? The callback function is called whenever the push button is pressed, so everytime it will add the new line to the excel file.
oh thanks, I didnt realise it would be re-called everytime. But, when i type in the code above i get this error:
Do you know why i have an error ?
I asked you to define row_number as a property of the app so that it will remain saved after each callback. My code was just an example. To create a property in, switch to code view, go the bar at the top of the app-designer window and create a new property. Name it row_number and assign it a value of 1. And then in the callback function write this
writetable(t, 'filename', 'Range', ['A', num2str(app.row_number)], 'WriteVariableNames', false)
app.row_number = app.row_number+1;
And what do you mean by 'property'?
Thank you so much, its working now. Sorry im new at matlab so trying to get to grips with it.
No problem! I am glad to be of help.
Hi Ameer, sorry to bother again,
but when i save my data it does save but its saves on row 20 or 21 or 22 or 23 for some reason and not at the top of the excel spreadsheet. This is the code i have, dont think it chnaged any of it. Do you know why?
You have written
.... 'range', ['A2' num2str(.....
replace 'A2' with just 'A'.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

saleh said bouhliga
saleh said bouhliga am 10 Okt. 2020
For example
filename = book1
sheet = sheet1
table name = app.t
writetable(app.t,"Book1.xlsx","Sheet",1);

Community Treasure Hunt

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

Start Hunting!

Translated by