使用PHPExcel设置电子表格单元格的宽度

82

我正尝试通过以下方式设置用PHPExcel生成的Excel文档中单元格的宽度:

$objPHPExcel->getActiveSheet()->getColumnDimensionByColumn('C')->setWidth('10');
$objPHPExcel->getActiveSheet()->getColumnDimensionByColumn('C')->setAutoSize(false);

但那样并不起作用。

我需要在这里调用什么方法?

8个回答

200

这只是微小的差别,但这对我来说很有效:

$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(10);

请注意,getColumnDimensionByColumngetColumnDimension之间的区别。

另外,我甚至没有设置AutoSize,但它也能正常工作。


我该如何将wordwrap属性设置为特定列?如果您知道,那对我会很有用。谢谢! - Talk2Nit
5
我很久没用PHPExcel了,但我认为你想使用的是'setWrapText'。例如:$objPHPExcel->getActiveSheet()->getStyle('A6')->getAlignment()->setWrapText(true)。 - James John McGuire 'Jahmic'
Jahmic是正确的。AutoSize默认情况下在所有列上都设置为false,因此没有必要使用代码进行设置。 - imelgrat

13

setAutoSize方法必须在setWidth方法之前调用:

$objPHPExcel->getActiveSheet()->getColumnDimensionByColumn('C')->setAutoSize(false);
$objPHPExcel->getActiveSheet()->getColumnDimensionByColumn('C')->setWidth('10');

2
需要设置AutoSize:false才能设置宽度。 - user3711851
2
getColumnDimensionByColumn() 函数需要一个基于0的列索引,而不是列名。(来自 Worksheet 类:“@param string $pColumn 单元格的数字列坐标”) - userfuser

9

你好,我遇到了同样的问题。需要将0.71添加到Excel单元格宽度值中,并将该值提供给

$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(10);

例如:

列宽度为3.71(Excel数值)

将列宽度设为4.42,输出文件的单元格宽度不变。

$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(4.42);

希望这可以帮到您。

8

以下是将列宽设置为自适应大小的方法。这对我很有效。

$spreadsheet->getActiveSheet()->getColumnDimension('A')->setAutoSize(true);

5
这对我有用:

这对我有用:

$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setAutoSize(false);
$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(10);

请务必在Rolland提到的setWidth();之前添加setAuzoSize(false),以确保正确性。


请不要添加重复的答案,Rolland已经定义了。 - M Khalid Junaid
1
是的,但它使用的是getColumnDimension而不是getColumnDimensionByColumn。 - Magor Menessy
@MKhalidJunaid 你可能需要再次检查。这不是重复答案,因为它实现了完全不同的方法。 - I try so hard but I cry harder

5
那是因为 getColumnDimensionByColumn 接收的是列索引(从0开始的整数),而不是字符串。

setCellValueByColumnAndRow 也是同样的情况。


3
这种方法可以更轻松地自动调整列的大小。
foreach (range('A', 'I') as $letra) {            
            $spreadsheet->getActiveSheet()->getColumnDimension($letra)->setAutoSize(true);
}

1
正确设置列宽的方式是使用Jahmic发布的代码行,但重要的是要注意,在添加数据之后而不是之前应用样式,否则在某些配置上可能不会应用列宽。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接