How to write elements of a nested cell array to an excel?
26 次查看(过去 30 天)
显示 更早的评论
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](https://www.mathworks.com/matlabcentral/answers/uploaded_files/231779/Capture.png)
0 个评论
采纳的回答
Andrei Bobrov
2019-7-29
编辑:Andrei Bobrov
2019-7-29
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 个评论
更多回答(2 个)
dpb
2019-7-29
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 个评论
TADA
2019-7-29
编辑:TADA
2019-7-29
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 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Spreadsheets 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!