Export Cell-Data to .xlsx [Saves less data]
1 次查看(过去 30 天)
显示 更早的评论
Hello Everyone,
I am using following code to export Cell-data to .xlsx file.
filename='(AutoCheck7000).xlsx';
output = [header; Dataset];
xlswrite(filename,output); % Write to the new excel file.
Where as;
header is cell with 1*13 size
dataset is cell with 189*13 size
I have concentrated them using a variable output but xlswrite is only writing 2 header names instead of all names.
For instance;
the result is:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/230162/image.png)
Whereas, the output-variable is as follows, so .xlsx should show all header names as well:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/230163/image.png)
Any help would be appreciated :-)
Best regard,s
Waqar Ali Memon
3 个评论
采纳的回答
Peter Jarosi
2019-7-17
编辑:Peter Jarosi
2019-7-17
I recommend converting your cell-data to table and using function writetable().
filename='myExcelFile.xlsx';
myTable = cell2table(Dataset, 'VariableNames', header);
writetable(myTable, filename, 'WriteVariableNames', true);
There is a new function writecell() introduced in R2019a, which can write cell objects into Excel files directly. You may also want to try it. https://www.mathworks.com/help/matlab/ref/writecell.html
5 个评论
Peter Jarosi
2019-7-18
Thanks!
I like your more elegant method fixing header problems:
header = matlab.lang.makeValidName(header)
更多回答(1 个)
Peter Jarosi
2019-7-17
Actually, your Dataset and header need some massage before converting to table:
filename='(AutoCheck7000).xlsx';
load('Dataset.mat');
Dataset = cellfun(@num2str, Dataset, 'un', 0);
load('header.mat');
header = cellfun(@char, header, 'un', 0);
header = strrep(header, '02', 'file_02');
header = strrep(header, ' ', '_');
header = strrep(header, '.', '_');
header = strrep(header, '-', '_');
header = strrep(header, '(', '_');
header = strrep(header, ')', '_');
header = strrep(header, '[', '_');
header = strrep(header, ']', '_');
myTable = cell2table(Dataset, 'VariableNames', header);
writetable(myTable, filename, 'WriteVariableNames', true);
It'll work for you. I've tested.
2 个评论
Peter Jarosi
2019-7-17
编辑:Peter Jarosi
2019-7-17
Massaging header was needed, because it violated the rules of variable names. Quote "A valid variable name begins with a letter and contains not more than namelengthmax characters. Valid variable names can include letters, digits, and underscores." End quote. https://www.mathworks.com/help/matlab/ref/isvarname.html
Your header was in cells of cells format instead of cells of strings format, that's why I applied
header = cellfun(@char, header, 'un', 0);
Your dataset contained mixed numeric and string cells, so I converted all of them to strings.
Dataset = cellfun(@num2str, Dataset, 'un', 0);
Usually it's not necessary but it seemed to be the easiest way to fix your problem.
You may also accept my other answer, because that is more general, so that it might help others to solve their problems (and helps me to achieve rising star badge :-))
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Spreadsheets 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!