I made some further tests, and I've found a workaround (although I still consider the behaviour described above a BUG).
Before inserting a "very long string", save the file and reload it. This will cause the "setAutoSize" to
come into effect (i.e. column widths are computed and saved). After opening the file, the getWidth() method starts to work (returns a real value, not -1).
One additional bug I've found. My code does:
$objPHPExcel->getActiveSheet()->setTitle('A fancy sheet title');
and a file with such a title is successfully written, but not read:
Uncaught exception 'Exception' with message 'Invalid cell coordinate 'A FANCY SHEET TITLE'!A2'
Another bug: when setting setAutoSize(true); PHPExcel doesn't take into account an autofilter and its buttons that also take some width, thus making cells with autofilter too narrow. This can be easily worked-around once the above workaround is in place.
Any chance to have the three above bugs fixed?