MATLAB Answers

0

Write cell array defined by a variable to a excel file

Asked by Gopika Rajan on 1 Sep 2019
Latest activity Edited by Adam Danz
on 4 Sep 2019
Hello,
I have a cell array that I get after processing data which needs to be written to a excel file. For some reason, fprintf is not working. Niether is writecell. Here is the code:
c = [D1 D2];
fileID = fopen(sprintf('%s_final.txt',fname), 'w');
% fprintf(c,fileID);
fclose(fileID);
Does anyone know what I am doing wrong?
The cell array output is something like:
'0.34' '0.4883' '0.000498246' '1.005859' '201780.00' '0.000004956' ' 36.0' 23
'0.51' '0.4883' '0.000498246' '1.000977' '200800.00' '0.000004980' ' 36.0' 23
'0.68' '0.5078' '0.000518176' '1.000977' '193073.07' '0.000005179' ' 35.0' 23
'0.85' '0.5273' '0.000538106' '1.000977' '185918.51' '0.000005379' ' 35.0' 23
'1.02' '0.4980' '0.000508211' '1.005859' '197821.57' '0.000005055' ' 35.0' 23
'1.19' '0.4932' '0.000503229' '1.000977' '198810.89' '0.000005030' ' 35.0' 23
'1.36' '0.5029' '0.000513194' '1.005859' '195900.01' '0.000005105' ' 35.0' 23
'1.53' '0.5078' '0.000518176' '1.005859' '194015.37' '0.000005154' ' 35.0' 23
'1.70' '0.5029' '0.000513194' '1.000977' '194948.56' '0.000005130' ' 35.0' 23
'1.87' '0.4785' '0.000488281' '1.005859' '205900.00' '0.000004857' ' 35.0' 23
'2.04' '0.4688' '0.000478316' '1.000977' '209170.84' '0.000004781' ' 35.0' 23
'2.21' '0.4932' '0.000503229' '1.000977' '198810.89' '0.000005030' ' 35.0' 23
'2.38' '0.4980' '0.000508211' '1.000977' '196860.79' '0.000005080' ' 35.0' 23
'2.55' '0.5029' '0.000513194' '1.005859' '195900.01' '0.000005105' ' 35.0' 23
'2.72' '0.4980' '0.000508211' '1.005859' '197821.57' '0.000005055' ' 35.0' 23
'2.89' '0.4932' '0.000503229' '1.000977' '198810.89' '0.000005030' ' 35.0' 23
'3.06' '0.5078' '0.000518176' '1.005859' '194015.37' '0.000005154' ' 35.0' 23
'3.23' '0.5225' '0.000533123' '1.005859' '188572.90' '0.000005303' ' 35.0' 23
'3.40' '0.4932' '0.000503229' '1.000977' '198810.89' '0.000005030' ' 35.0' 23
'3.57' '0.4980' '0.000508211' '1.000977' '196860.79' '0.000005080' ' 35.0' 23
'3.74' '0.5029' '0.000513194' '1.005859' '195900.01' '0.000005105' ' 35.0' 23
'3.91' '0.5127' '0.000523158' '1.010742' '193100.00' '0.000005179' ' 35.0' 23
'4.08' '0.5029' '0.000513194' '1.000977' '194948.56' '0.000005130' ' 35.0' 23
'4.25' '0.4834' '0.000493264' '1.005859' '203819.18' '0.000004906' ' 35.0' 23
'4.42' '0.4736' '0.000483299' '1.005859' '208023.71' '0.000004807' ' 35.0' 23
'4.59' '0.4980' '0.000508211' '1.005859' '197821.57' '0.000005055' ' 35.0' 23
'4.76' '0.4980' '0.000508211' '1.005859' '197821.57' '0.000005055' ' 35.0' 23
'4.93' '0.5078' '0.000518176' '1.005859' '194015.37' '0.000005154' ' 35.0' 23
'5.10' '0.4834' '0.000493264' '1.000977' '202829.28' '0.000004930' ' 35.0' 23
'5.27' '0.4932' '0.000503229' '1.000977' '198810.89' '0.000005030' ' 35.0' 23
'5.44' '0.5078' '0.000518176' '1.005859' '194015.37' '0.000005154' ' 35.0' 23
Thanks in advance

  0 Comments

Sign in to comment.

2 Answers

Answer by Adam Danz
on 1 Sep 2019
Edited by Adam Danz
on 4 Sep 2019

If you're using r2019a or later, use writecell() to write to an excel file. If you're using an earlier release, xlswrite(). See examples within those pages and if you get stuck, share your updated code and we'll get it sorted out.

  0 Comments

Sign in to comment.


Answer by dpb
on 1 Sep 2019

"a cell array that I get after processing data which needs to be written to a excel file. For some reason, fprintf is not working."
c = [D1 D2];
fileID = fopen(sprintf('%s_final.txt',fname), 'w');
% fprintf(c,fileID);
fclose(fileID);
fprintf is documented to not accept arrays other than numeric or character, not cell arrays. Further, it "knows nuthink!" about Excel altho you open the file with the .txt extension which is not a recognized Excel-formatted file altho Excel can import properly formatted text files.
Further, in
fprintf(c,fileID);
you don't use recognized syntax -- the actual argument order for fprintf is (fileID,formatSpec,A1,...An). You put a cell array (unallowable anyway) to be written first, the file handle second (instead of first) and left out a format specification entirely.
As Adam notes, for cell arrays, use either writecell or xlswrite depending on release you're running.

  0 Comments

Sign in to comment.