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

回到顶部