MATLAB Answers

Error When Using Writetable Function

35 views (last 30 days)
Jonathan Pinko
Jonathan Pinko on 22 Jun 2020
Commented: Tommy on 23 Jun 2020
Hi All,
I have the following code:
f={tSampleName cMeasuredFo cMeasuredD56Fe cMeasuredD26Mg cFeUncertainty cMgUncertainty cFeInterp cMgInterp cMagmaMgNum cOlivineFo cTemperature cDtrsquared cDiffusionCoef cyears1mm cyears2mm cyears3mm cyears4mm cyears5mm};
ResultsTable=cell2table(f);
writetable(ResultsTable,'CodeResults.xlsx');
In which all the inputs to f are 9x1 cells. When I try and run this code, I receive the following error message:
Error using writetable
Unable to perform assignment because the size of the left side is 1-by-1 and the size of the right side is 1-by-9.
Could someone please tell me what I'm doing wrong here? I would like to create a table in excel that shows all of my information stored in ResultsTable.
Thanks,
Jonathan
  1 Comment
Tommy
Tommy on 22 Jun 2020
For reference, here's what getReport() returns for the error you got, assuming I did get the same the error:
Unable to perform assignment because the size of the left side is 1-by-1 and the size of the right side is 1-by-9.
Error in tabular/writeXLSFile (line 132)
newVarj(:,cnt+(1:num)) = newVarjj;
Error in table/write (line 211)
writeXLSFile(t,fname,ext(2:end),otherArgs);
Error in writetable (line 155)
write(a,filename,varargin{:})
Error in [my file] (line 9)
writetable(ResultsTable,'CodeResults.xlsx');

Sign in to comment.

Accepted Answer

Tommy
Tommy on 23 Jun 2020
Edited: Tommy on 23 Jun 2020
It seems like writetable() has trouble handling the case where a variable in your table contains a cell which itself contains an Nx1 cell array. Does it work if you concatenate your original cell arrays using square brackets?
f=[tSampleName cMeasuredFo cMeasuredD56Fe cMeasuredD26Mg cFeUncertainty cMgUncertainty cFeInterp cMgInterp cMagmaMgNum cOlivineFo cTemperature cDtrsquared cDiffusionCoef cyears1mm cyears2mm cyears3mm cyears4mm cyears5mm];
ResultsTable=cell2table(f);
writetable(ResultsTable,'CodeResults.xlsx');
(edit)
This results in the error:
T = table({num2cell(1:9)'});
writetable(T,'CodeResults.xlsx');
This doesn't:
T = table({num2cell(1:9)});
writetable(T,'CodeResults.xlsx');
  4 Comments
Tommy
Tommy on 23 Jun 2020
Awesome, happy to help!

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!

Translated by