How to export a matrix of numeric values to Excel using writematrix
18 views (last 30 days)
I am having the problem that, when I export a matrix of double numeric values to excel, these are exported as text, causing problems in further calculations that excel does with the data being exported. I can correct this easily in excel, but it is not efficient and this was not happening if I used xlswrite.
My line of code to export the data is:
writematrix(MaxMinStructExport.ExcelOutput', ExcelExport.Filename, 'Sheet','PRod MaxMin', 'Range', strcat('B',ExcelExport.Sess_ExRow))
Where my file name is of the format:
ExcelExport.Filename = 'Example.xlsx';
Is there any quick solution to this that I am missing? I've attempted the use of the name-value pair 'PreserveFormat', but this is giving me an error as an invalid parameter name.
Also, as a side question, I'd be curious on why xlswrite is not recommended by Matlab, and if as users we should avoid its use as it's likely to become obsolete in future Matlab releases.
Thanks in advance for your help.
Ameer Hamza on 7 Dec 2020
The documentation mentions that the newer functions have better cross-platform support and performance as compared to xlswrite.
As you correctly identified, if the matrix itself is a string, the writematrix() will save them as a string too (I think this behavior makes more sense, instead of automatically converting to numeric values, without informing the user). Creating a cell array and using writecell() will be the correct approach here; otherwise, you can keep using xlswrite() if it is working fine.
The other approach is to make two calls to writematrix() like this