php 设置自动调整列phpExcel
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/21286275/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Setting autosize column phpExcel
提问by Yamaha32088
How do I make PHPExcel create the column width automatically I don't like having to go in by hand and stretch the columns witdth. I have looked at other examples but none work for me. Here is my code:
如何让 PHPExcel 自动创建列宽我不喜欢手动进入并拉伸列宽度。我看过其他例子,但没有一个对我有用。这是我的代码:
$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.";
回答by Mark Baker
As described in section 4.6.28 of the developer documentation, entitled Setting a column's width:
如开发人员文档第 4.6.28 节所述,标题为Setting a column's width:
$objPHPExcel->getActiveSheet()
->getColumnDimension('A')
->setAutoSize(true);
This has to be set individually for each column, so to set it for all of columns A through F, use a loop
这必须为每一列单独设置,因此要为所有列 A 到 F 设置它,请使用循环
for($col = 'A'; $col !== 'G'; $col++) {
$objPHPExcel->getActiveSheet()
->getColumnDimension($col)
->setAutoSize(true);
}
回答by dap.tci
$nCols = 6; //set the number of columns
foreach (range(0, $nCols) as $col) {
$objPHPExcel->getActiveSheet()->getColumnDimensionByColumn($col)->setAutoSize(true);
}
回答by Sadikhasan
foreach(range('A','G') as $columnID)
{
$objPHPExcel->getActiveSheet()->getColumnDimension($columnID)->setAutoSize(true);
}

