Проблемы с размером столбца phpExcel

Я хочу убедиться, что в рабочей книге, созданной phpExcel, нет значения. Для этого я звоню

$oCurrentSheet->getColumnDimension($aCurrentCoords['x'])->setAutoSize(true); 

каждый раз, когда я пишу ячейку. Это, похоже, не работает: многие столбцы в конечном итоге очень маленькие.

Кто-нибудь знает, как убедиться, что каждый столбец в выведенной книге Excel стоит в соответствии с его содержанием?

Не делайте этого каждый раз, когда вы пишете ячейку … это лишние накладные расходы. Сделайте это только один раз для каждого столбца.

Будьте осторожны, это все еще дорого при сохранении, потому что PHPExcel затем просматривает каждую ячейку в этом столбце, обрабатывая необходимую ширину на основе содержимого этой ячейки, принимая во внимание вычисление и форматирование формулы и используя максимальный размер любой ячейки в этом колонка. Даже тогда это не идеальное решение: поведение по умолчанию заключается в оценке, подсчете количества отображаемых символов и использовании универсального множителя на основе шрифта (Arial, Verdana of Calibri) и небольшого количества дополнений. Для более точного вычисления вы можете изменить метод, используемый для вычисления, а затем код использует GD для построения ограничивающего прямоугольника ttf и основывает размер ячейки на размерах этого поля. Это более точный расчет, но намного медленнее.

Вы можете изменить метод расчета, используя:

 PHPExcel_Shared_Font::setAutoSizeMethod($method); 

перед сохранением, где $ method является одним из следующих:

 PHPExcel_Shared_Font::AUTOSIZE_METHOD_APPROX PHPExcel_Shared_Font::AUTOSIZE_METHOD_EXACT 

Это все еще не идеальное решение, но это лучший расчет, который может сделать PHPExcel.

Альтернативой является вызов метода calcColumnWidths () рабочего листа непосредственно перед сохранением … и затем пройдите измерение каждого столбца, увеличив значение на 5%, чтобы убедиться, что весь столбец подходит, прежде чем сохранять.