MATLAB: Using excel data for input into a pop up menu.

guiimporting excel datapopupmenu

[material_num, material_text, material_all] = xlsread('MaterialList.xlsx', 'B:B');
[value_num, value_text, value_all] = xlsread('MaterialList.xlsx', 'C:C');
[m,n] = size(material_text)
for x=1:m
string_list{x} = material_text(x,1)
end
set(handles.popupmenu1,'String', string_list)
currently I have this code above which takes words from an excel file and assigns the words into the variable string_list using a for loop. My problem is using string_list to input multiple words into the popup menu. Everytime I run this I get the error
Error using matlab.ui.control.UIControl/set
While setting the 'String' property of 'UIControl':
Cell arrays input to String property may only contain character and numeric matrices.
Error in SolderAngleGUI3>SolderAngleGUI3_OpeningFcn (line 62)
set(handles.popupmenu1,'String', string_list)
Error in gui_mainfcn (line 220)
feval(gui_State.gui_OpeningFcn, gui_hFigure, [], guidata(gui_hFigure), varargin{:});
Error in SolderAngleGUI3 (line 42)
gui_mainfcn(gui_State, varargin{:});
I want the list to be made before my GUI appears so I currently have this code in the OpeningFcn of the GUI.
Are there problems with my code? Are they located in the correct function?

Best Answer

When you use xlsread(), the second output is already a cell array of strings. You are using
for x=1:m
string_list{x} = material_text(x,1)
end
which indexes the cell array using array notation, which gives a cell array of size 1 rather than giving the content of the cell array. Therefor your string_list becomes a cell array of cell arrays of string.
You should use
string_list = material_text(1:m,1);