texto - Configuración de la columna de tamaño automático phpExcel
phpexcel autosize not working (3)
Como se describe en la sección 4.6.28 de la documentación del desarrollador, titulada Setting a column''s width
:
$objPHPExcel->getActiveSheet()
->getColumnDimension(''A'')
->setAutoSize(true);
Esto debe configurarse individualmente para cada columna, para configurarla para todas las columnas A a F, use un bucle
for($col = ''A''; $col !== ''G''; $col++) {
$objPHPExcel->getActiveSheet()
->getColumnDimension($col)
->setAutoSize(true);
}
¿Cómo puedo hacer que PHPExcel cree el ancho de la columna automáticamente? No me gusta tener que ir a mano y estirar las columnas con el ancho. He visto otros ejemplos, pero ninguno funciona para mí. Aquí está mi código:
$objPHPExcel->setActiveSheetIndex(0);
$objPHPExcel->getActiveSheet()->setCellValue(''A1'', "Company Name");
$objPHPExcel->getActiveSheet()->setCellValue(''B1'', "Company Type");
$objPHPExcel->getActiveSheet()->setCellValue(''C1'', "First Name");
$objPHPExcel->getActiveSheet()->setCellValue(''D1'', "Last Name");
$objPHPExcel->getActiveSheet()->setCellValue(''E1'', "Position");
$objPHPExcel->getActiveSheet()->setCellValue(''F1'', "Email");
// Set outline levels
$objPHPExcel->getActiveSheet()->getColumnDimension(''E'')->setOutlineLevel(1)
->setVisible(false)
->setCollapsed(true);
// Freeze panes
$objPHPExcel->getActiveSheet()->freezePane(''A2'');
// Rows to repeat at top
$objPHPExcel->getActiveSheet()->getPageSetup()->setRowsToRepeatAtTopByStartAndEnd(1, 1);
try {
$stmt3 = $DB->prepare(''SELECT * FROM companies C INNER JOIN personalInfo PI ON C.CompanyName = PI.Company_id'');
$stmt3->execute();
} catch(PDOException $e) {
echo $e->getMessage();
}
$info3 = $stmt3->fetchAll();
$i = 2;
foreach($info3 as $info) {
$objPHPExcel->getActiveSheet()->setCellValue(''A'' . $i, $info[''CompanyName''])
->setCellValue(''B'' . $i, $info[''CompanyType''])
->setCellValue(''C'' . $i, $info[''firstName''])
->setCellValue(''D'' . $i, $info[''lastName''])
->setCellValue(''E'' . $i, $info[''position''])
->setCellValue(''F'' . $i, $info[''email'']);
$i++;
}
// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$objPHPExcel->setActiveSheetIndex(0);
// Save Excel 2007 file
$callStartTime = microtime(true);
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, ''Excel2007'');
$objWriter->save(str_replace(''.php'', ''.xlsx'', __FILE__));
$callEndTime = microtime(true);
$callTime = $callEndTime - $callStartTime;
echo "Excel file has been created click <a href=''Excel.xlsx''>HERE</a> to view it.";
foreach(range(''A'',''G'') as $columnID)
{
$objPHPExcel->getActiveSheet()->getColumnDimension($columnID)->setAutoSize(true);
}
$nCols = 6; //set the number of columns
foreach (range(0, $nCols) as $col) {
$objPHPExcel->getActiveSheet()->getColumnDimensionByColumn($col)->setAutoSize(true);
}