You need to use a third-party library like Apache POI to do this.
Coincidentally, I'm writing an Office IO API to support use cases like this. It runs on Apache POI, so it'll work on Linux and is suitable for server-side automation. It supports setting column widths and other sheet formatting.
Sorry about the delay - the original answer was to me "too complicated for now". However, I would like to get this working so that I can preserve presentational elements of the .xlsx spreadsheet while still using the matlab table format to manipulate the data.
Could you post a simple example showing how to read in the coloumns widths from the orginal .xslx file and how to set them in a new file created with writetable() please? The documentation on github is a bit minimal.