导出可用数据以使用matlab for excel来实现excel

我卡住试图导出的matlab可用数据为Excel。 我尝试了很多东西,解决这个问题是不可能的。 多天后,我使用windows试用下面的代码,它确实工作,但是,使用相同的Macintosh不再工作。 输出如下:

“错误使用dlmwrite(第118行)input单元格数组不能转换为matrix”

寻找更多的信息,我在这里find了一个答案,( 使用“xlswrite”MATLAB单元格数组包含不同大小的string ),这并不完美。 最后我发现这个方法只适用于使用windows的matlab( http://www.mathworks.es/matlabcentral/answers/20819-export-uitable-s-data-to-a-spreadsheet-excel )。

我希望你能帮助我解决这个问题。

提前致谢

赫克托

function Save_File hf = figure; hExportButton = uicontrol('Parent',hf,'Units',... 'normalized','Position',[0 0.81 0.22 0.18],'Style','Pushbutton',.... 'String',' Export Data!','FontSize',20,'Callback',@ExportButton_Callback); dat = rand(5,5); t=uitable('Data',dat,'ColumnName',{'First','Second','Third','Fourth','Fifth'},... 'Position',[7 10 500 300]); Data=get(t,'Data'); ColumnName=get(t,'ColumnName'); set(t,'ColumnWidth',{93.5}) function ExportButton_Callback(~,~) NewData= num2cell(Data,ones(size(Data,1),1),ones(size(Data,2),1)); CombData=[ColumnName';NewData]; FileName = uiputfile('*.xls','Save as'); xlswrite(FileName,CombData); end end 

您应该能够使用csvwrite命令将单元格数组转换为数字数组,然后使用csvwritedlmwrite

如果数字和string的组合是问题,如我在上面的评论中所述,你可以使用一些简单的循环来完成这一切。 我在下面发布了一些示例代码。

 % Creating some temporary data for proof of concept mat = randi([1,5],10,2); header = {'Col1','Col2'}; cellVals = [header;num2cell(mat)]; % the real code that does the writing fh = fopen('temp.csv','w'); % open a file with write privileges, will overwrite old versions for ii = 1:size(cellVals,1) first = 1; for jj = 1:size(cellVals,2) if first fwrite(fh,num2str(cellVals{ii,jj},'%f')); first = 0; else fwrite(fh,[',',num2str(cellVals{ii,jj},'%f')]); end end fwrite(fh,sprintf('\r\n')); % print line break end fclose(fh); % close file out when done writing