我正在尝试自动调整工作表中列的大小。我正在编写文件,最后尝试调整所有列的大小。
// Add some data
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('B1', 'test1111111111111111111111')
->setCellValue('C1', 'test1111111111111')
->setCellValue('D1', 'test1111111')
->setCellValue('E1', 'test11111')
->setCellValue('F1', 'test1')
->setCellValue('G1', 'test1');
foreach($objPHPExcel->getActiveSheet()->getColumnDimension() as $col) {
$col->setAutoSize(true);
}
$objPHPExcel->getActiveSheet()->calculateColumnWidths();
上面的代码不起作用。不更改列大小以适合文本
更新我正在使用$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
的编写器
发布于 2013-05-27 01:46:38
如果将列设置为AutoSize,PHPExcel将尝试根据该列的计算值(任何公式的结果也是如此)以及由格式掩码添加的任何附加字符(如千位分隔符)来计算列宽。
默认情况下,这是一个estimated
宽度:基于使用GD,可以使用一种更精确的计算方法,它也可以处理粗体和斜体等字体样式功能;但这是一个更大的开销,因此默认情况下它是关闭的。您可以使用以下命令启用更精确的计算
PHPExcel_Shared_Font::setAutoSizeMethod(PHPExcel_Shared_Font::AUTOSIZE_METHOD_EXACT);
但是,自动调整大小并不适用于所有Writer格式...例如CSV。你没有提到你使用的是哪个作者。
但您还需要确定用于设置维度的列:
foreach(range('B','G') as $columnID) {
$objPHPExcel->getActiveSheet()->getColumnDimension($columnID)
->setAutoSize(true);
}
$objPHPExcel->getActiveSheet()->getColumnDimension()
需要列ID。
$objPHPExcel->getActiveSheet()->getColumnDimensions()
将返回一个包含所有已定义列维记录的数组;但是,除非显式地创建了列维记录(可能是通过加载模板或手动调用getColumnDimension()
),否则它将不会存在(节省内存)。
发布于 2014-10-06 18:58:36
如果您需要在多个工作表上执行此操作,并且每个工作表中有多个列,下面是您可以遍历所有这些表的方法:
// Auto size columns for each worksheet
foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) {
$objPHPExcel->setActiveSheetIndex($objPHPExcel->getIndex($worksheet));
$sheet = $objPHPExcel->getActiveSheet();
$cellIterator = $sheet->getRowIterator()->current()->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(true);
/** @var PHPExcel_Cell $cell */
foreach ($cellIterator as $cell) {
$sheet->getColumnDimension($cell->getColumn())->setAutoSize(true);
}
}
发布于 2014-07-07 20:19:51
这里是一个基于@Mark Baker帖子的更灵活的变体:
foreach (range('A', $phpExcelObject->getActiveSheet()->getHighestDataColumn()) as $col) {
$phpExcelObject->getActiveSheet()
->getColumnDimension($col)
->setAutoSize(true);
}
希望这能有所帮助;)
https://stackoverflow.com/questions/16761897
复制相似问题