No haga esto cada vez que escriba una celda ... es una sobrecarga innecesaria. Hazlo solo una vez para cada columna.
Tenga en cuenta que es costoso guardar, porque PHPExcel recorre cada celda de esa columna calculando el ancho necesario según el contenido de esa celda, teniendo en cuenta el cálculo y el formato de la fórmula, y utilizando el tamaño máximo de cualquier celda en esa columna. Incluso entonces no es una solución perfecta: el comportamiento predeterminado es estimar, contar el número de caracteres para mostrar y usar un multiplicador genérico basado en la fuente (Arial, Verdana de Calibri) y un poco de relleno. Para un cálculo más preciso, puede cambiar el método utilizado para el cálculo, y el código luego usa GD para construir un cuadro delimitador ttf y basar el tamaño de la celda en las dimensiones de ese cuadro. Este es un cálculo más preciso, pero mucho más lento.
Puede cambiar el método de cálculo usando:
PHPExcel_Shared_Font::setAutoSizeMethod($method);
antes de guardar, en donde el método $ es uno de los siguientes:
PHPExcel_Shared_Font::AUTOSIZE_METHOD_APPROX
PHPExcel_Shared_Font::AUTOSIZE_METHOD_EXACT
Esto todavía no es una solución perfecta, pero es la mejor cálculo que PHPExcel puede hacer.
Una alternativa es llamar calculateColumnWidths de la hoja de trabajo() método de ti mismo antes de guardar directamente ... y luego caminar a través de la dimensión de cada columna aumentando el valor por quizás el 5% para tratar de asegurar que toda la columna se ajusta, antes de guardar.