Подтвердить что ты не робот

Настройка автосогласования столбца phpExcel

Как заставить PHPExcel автоматически создавать ширину столбца, мне не нравится, когда мне нужно идти вручную и растягивать столбцы witdth. Я посмотрел на другие примеры, но никто не работает для меня. Вот мой код:

$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.";
4b9b3361

Ответ 1

Как описано в разделе 4.6.28 документации разработчика, озаглавленной Setting a column width:

$objPHPExcel->getActiveSheet()
    ->getColumnDimension('A')
    ->setAutoSize(true);

Это нужно установить отдельно для каждого столбца, поэтому для его установки для всех столбцов от A до F используйте цикл

for($col = 'A'; $col !== 'G'; $col++) {
    $objPHPExcel->getActiveSheet()
        ->getColumnDimension($col)
        ->setAutoSize(true);
}

Ответ 2

    $nCols = 6; //set the number of columns

    foreach (range(0, $nCols) as $col) {
        $objPHPExcel->getActiveSheet()->getColumnDimensionByColumn($col)->setAutoSize(true);                
    }

Ответ 3

foreach(range('A','G') as $columnID)
{
    $objPHPExcel->getActiveSheet()->getColumnDimension($columnID)->setAutoSize(true);
}