我正在尝试自动调整工作表的列大小。我正在写文件,最后我尝试调整所有列的大小。
// 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');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
如果将列设置为AutoSize,PHPExcel会尝试根据列的计算值(基于任何公式的结果)以及格式掩码(例如千位分隔符)添加的任何其他字符来计算列宽。
默认情况下,这是estimated宽度:使用GD时,可以使用一种更准确的计算方法,该方法还可以处理字体样式功能(例如粗体和斜体);但这是一个很大的开销,因此默认情况下将其关闭。您可以使用以下方法启用更准确的计算
estimated
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()->getColumnDimension()
$objPHPExcel->getActiveSheet()->getColumnDimensions()将返回所有已定义列维记录的数组;但是除非明确创建了列维记录(例如通过加载模板或通过手动调用getColumnDimension()),否则该记录将不存在(保存内存)。
$objPHPExcel->getActiveSheet()->getColumnDimensions()
getColumnDimension()