how to preserve original column headings (variable names) when using writetable

509 views (last 30 days)
When importing spreadsheets containing invalid variable names, Matlab changes them and stores the original column headings in the VariableDescriptions property of the table. How can I write my table to a file and use the original variable names on export? In other words, how can I export T so that output_table.xlsx is the same as input_table.xlsx?
Reprocessing the exported file as a string is not really an option, because my original file will have multiple sheets.
T = readtable('input_table.xlsx'); % Matlab changes "Column 1" to "Column1"
writetable(T,'output_table.xlsx');

Accepted Answer

Sindar
Sindar on 22 Apr 2020
As of 2019b, table variable names don't need to follow normal variable naming rules. This allows for a couple of fixes:
T = readtable('input_table.xlsx','PreserveVariableNames',true);
or
T.Properties.VariableNames={'Column 1';'Column 2'}
  2 Comments
fixusc
fixusc on 22 Apr 2020
Wow, thanks for pointing this out.
It's however very likely to cause problems when writing code for someone else because it is hard to assure that everybody has at least 2019b. But cool to know for my own stuff.
Alan Pawollek
Alan Pawollek on 15 Oct 2021
Edited: Alan Pawollek on 15 Oct 2021
Thanks @Sindar works perfecty fine :) Now I don't need to do it via
[name of File].Properties.VariableNames
and write it manually for each coloumn.
ps. I habe the latest version of Matlab R2021b

Sign in to comment.

More Answers (0)

Products


Release

R2018a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!