Set listbox with excel content --Attempt to reference field of non-structure array

I have a GUI in which a want to set the content of an Excel file in a listbox, the code used is:
[ndata, text, alldata] = xlsread(filename);
set(handles.list_register,'String',cell2str(text));
The Excel file contains only one column with a string in each cell. Once the xls file is read the variable text is a cell type. When I compiled I got:
Attempt to reference field of non-structure array.
Error in Register>list_register_CreateFcn (line 100)
set(handles.list_register,'String',fields(struct(text)));
Thanks in advance for your help,

Answers (2)

cell2str is not a valid Matlab function, it's cellstr and the variable text is already a cell array

4 Comments

Sorry you are right, anyway I am still having the same Problem with the code:
[ndata, text, alldata] = xlsread(filename);
set(handles.list_register,'String',text);
Any idea which could be the problem?
But the error message correspond to another line
set(handles.list_register,'String',fields(struct(text))
what struct(text) means?
Sorry again I copied an old error, the erros is:
Attempt to reference field of non-structure array.
Error in Register>list_register_CreateFcn (line 100)
set(handles.list_register,'String',text);

Sign in to comment.

Dear Manual, I assume that "text" just has one cell then you do like this:
[ndata, text, alldata] = xlsread(filename);
set(handles.list_register,'String',text{:});
I hope it helps

6 Comments

You are rigth is a cell, I used your Version but still give the same error:
Attempt to reference field of non-structure array.
Error in Register>list_register_CreateFcn (line 100)
set(handles.list_register,'String',text{:});
Is your "text" contain any data? or is it empty? Also I agree with Azzi show us your code please
If text is a cell array
set(handles.list_register,'String',text);
is correct
This is the code:
function list_register_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
filename = fullfile('\\Data\Results\matlab','reg_list.xls');
[ndata, text, alldata] = xlsread(filename);
set(handles.list_register,'String',text);
Where text is:
text =
'11-Oct-2013---Start'
'03-Oct-2013---Modify'
'03-Oct-2013---Finish'
And type:
class(text)
ans =
cell
This is what I have and I got the error:
Attempt to reference field of non-structure array.
Error in Register>list_register_CreateFcn (line 100)
set(handles.list_register,'String',text);
Any idea how could I make it?
Why your code is in function list_register_CreateFcn ? It should be in any callback
There is a button which opens a new GUI called Register, and when this Register is called then the listbox inside this Register needs to be created with text as content.
@Azzi Abdelmalek if you Need more data let me know.

Sign in to comment.

Categories

Asked:

on 15 Oct 2013

Commented:

on 16 Oct 2013

Community Treasure Hunt

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

Start Hunting!