У меня есть решение для этого.
$columns = 'NOMBRE,APELLIDO,CEDULA';
$arrayColumns = array('NOMBRE','APELLIDO','CEDULA');
$format = $report->workbook->addFormat(array('Align' => 'left', 'size' => 10, 'Color' => 0));
$col = 2;
$row = 5;
foreach($arrayColumns as $columnName){
$report->worksheet->write($row, $col, $columnName, $format);
$arrayColumnsWidth[$col] = strlen($columnName);
$col++;
}
$sql = "SELECT $columns
FROM table" ;
$objConnectionSQL->prepareSql($sql);
$rs = $objConnectionSQL->executeQuery();
$row++;//it brings me to the next row
while ($data = $objConnectionSQL->getRows($rs)) {
$col = 2;
foreach($arrayColumns as $columnName){
$report->worksheet->write($row, $col, $data[$columnName], $format);
if($arrayColumnsWidth[$col] < strlen($data[$columnName])){
$arrayColumnsWidth[$col] = strlen($data[$columnName]);
}
$col++;
}
$row++;
}
foreach($arrayColumnsWidth as $keyCol => $valWidth){
$this->worksheet->setColumn($keyCol,$keyCol,floor($valWidth));
}
Поначалу это немного сложно, но сейчас я могу сделать динамическую ширину для каждого столбца.
Надеюсь, это кому-нибудь поможет.