PHPExcel自动调整列宽
我正在尝试自动调整工作表的列大小。我正在写文件,最后我尝试调整所有列的大小。
// 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');
回答:
如果将列设置为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()
),否则该记录将不存在(保存内存)。
以上是 PHPExcel自动调整列宽 的全部内容, 来源链接: utcz.com/qa/435490.html