Convert cell array to excel - problem with nested cells
Show older comments
Hello!
I really need to write this data from a cell array into an excel file (you can find it attached or in the printscreen). I've used
xlswrite('data.xls', M2)
and
writecell(M2, 'data.xls')
and nothing works because I have nested cells and all with different sizes, some even empty. How can this work?
I need data to be separated like this in the excel:
line1 = M{1,1}
line 2 = M{2,1}
line 3 = M{3,1}
line 4 = M{1,2}
line 5 = M{2,2}
line 6 = M{3,2}
...and so on...
Please help!

2 Comments
dpb
on 17 Oct 2021
You'll have to unnest them first.
Probably an explicit loop or loops will be needed.
BUT--
You can NOT put an array into a single cell in Excel if that is what you're trying to do.
Melissa Jones
on 17 Oct 2021
Accepted Answer
More Answers (1)
Walter Roberson
on 17 Oct 2021
0 votes
You have several options:
- write each cell entry as text, perhaps using M2s = cellfun(@mat2str, M2, 'uniform', 0) . If you do that, then Excel will not be able to interpret the results as numeric
- Provided that you do not have any natural "nan" entries, convert each entry into a column and append a nan to it, and combine the entries. You might need to pad each column to the same length using nan. So the first column would contain 52 double, then a nan, then 34 double, then a nan, then 6 nan (longest column would be 92 entries)
- find the widest column and pad each of them out to that size. Then rearrange the entries into continuous columns. Your widest is 74 columns, so you would pad each of the 1 x N out to be 1 x 72, using NaN as your padding; then you would rearrange to a cell containing a letter, then 72 cells with numeric values, then another 72 cells of numeric values, and each column would have that length.
- expand the first column into 52 columns (of 3 rows), expand the second column into 74 columns, the third into 60 columns, and so on, with the number of new colums needed being equal to the widest row in that column. You might need to put in a new row that indicates which original column each entry belonged to.
1 Comment
Melissa Jones
on 17 Oct 2021
Categories
Find more on Spreadsheets in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!