MATLAB Answers

How to write elements of a nested cell array to an excel?

30 views (last 30 days)
maruljay
maruljay on 29 Jul 2019
Edited: Andrei Bobrov on 29 Jul 2019
Hi all,
I have nested cell array where each cell array contains a time series.
How do I write the contents of each of the cell array into rows in excel in the same sheet?
Like for example i want WS {2,1} to be written to the 2nd row in excel in the same sheet.
Capture.PNG

  0 Comments

Sign in to comment.

Accepted Answer

Andrei Bobrov
Andrei Bobrov on 29 Jul 2019
Edited: Andrei Bobrov on 29 Jul 2019
for old version of MATLAB
n = cellfun(@numel,WC);
k = cumsum(n);
ii = k - n + 1;
v = ones(k(end),1);
v(ii(2:end)) = v(ii(2:end)) - n(1:end-1);
A = accumarray([repelem((1:numel(n))',n),cumsum(v)],[C{:}]',[],[],nan);
xlswrite('yourxlsxfile.xlsx',A);

  0 Comments

Sign in to comment.

More Answers (2)

dpb
dpb on 29 Jul 2019
Since all aren't same size, the trivial solution of
xlswrite(cell2mat(WS))
is out unless you augment the shorter to the length of longest.
If doing that is out, you'll have to either loop or use cellfun to write each array element.

  0 Comments

Sign in to comment.


TADA
TADA on 29 Jul 2019
Edited: TADA on 29 Jul 2019
The problem starts with the different sizes of each rpw which makes it more complecated to unravel the nested cell arrays
c = {{1 2 3}; {1 2 3 4}; {1 2 3}};
% check row sizes
sizes = cellfun('length', c);
maxlen = max(sizes);
% equalize row sizes
for i = 1:numel(c)
c{i} = [c{i} cell(1,maxlen-sizes(i))];
end
% unravel cell array into a 2d cell array
c1 = vertcat(c{:});
% now you can export it easily
writecell(c1, 'c.xlsx', 'sheet', 1)

  0 Comments

Sign in to comment.

Sign in to answer this question.