MATLAB Answers

Jason
0

Copying uitable contents and column headings to clipboard for non-fixed column headings

Asked by Jason
on 19 Mar 2019
Latest activity Commented on by Jason
on 20 Mar 2019
Hello.
I am using the following code below to copy the contents of a uitable.
s=get(handles.uitableResults,'data')
size_s = size(s);
str = sprintf('%s\t%s\t\%s\t\%s\t','Plane','FWHM', 'Enc.Energy','<loc Int>','Brenner');
str = sprintf ( '%s\n', str );
%str = '';
for i=1:size_s(1)
for j=1:size_s(2)
str = sprintf ( '%s%f\t', str, s(i,j) );
end
str = sprintf ( '%s\n', str );
end
clipboard ( 'copy', str );
I have hardcoded the titles (column headings), however I now use this code to copy many different populations of the uitable, each with a different number of columns and column headings. Can the above code be generalised to just pick up the current column names?
Thanks
Jason

  0 Comments

Sign in to comment.

1 Answer

Answer by Geoff Hayes
on 19 Mar 2019
 Accepted Answer

Jason - I think that you can use the ColumnName property of the uitable to get the column names. For example,
hTable = uitable('Data',[1 2 3; 4 5 6; 7 8 9], 'ColumnName', {'A', 'B', 'C'});
columnNames = get(hTable, 'ColumnName');
where columnNames is a cell array of the column names for your table.

  3 Comments

Thanks Geoff. Im struggling to convet a variale number of elements within the cell array intot he following format
str = sprintf('%s\t%s\t\%s\t\%s\t','Plane','FWHM', 'Enc.Energy','<loc Int>','Brenner')
How do I have a variable number of %s/t ?
Thanks
Jason
Hi Jason - perhaps try
str = sprintf('%s\t', columnNames{:});

Sign in to comment.