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


70

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

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

但这不起作用。

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

Answers:


176

这是一个微妙的区别,但这对我来说很好:

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

请注意,之间的区别getColumnDimensionByColumngetColumnDimension

另外,我什至没有设置AutoSize,它也可以正常工作。


如何将wordwrap属性设置为特定列。如果您知道的话,这对我很有用。谢谢!
Talk2Nit 2014年

4
自从我与PHPExcel合作以来已经有一段时间了,但是我相信您想要'setWrapText'。例如:$ objPHPExcel-> getActiveSheet()-> getStyle('A6')-> getAlignment()-> setWrapText(true);
Jahmic 2014年

贾希米(Jahmic)是对的。默认情况下,所有列的AutoSize都设置为false,因此无需使用代码即可。
imelgrat

10

setAutoSize方法必须位于setWidth之前:

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

2
AutoSize:必须为false才能设置宽度
user3711851

1
getColumnDimensionByColumn()需要基于0的列索引,而不是列名。(来自Worksheet类:“ @ param字符串$ pColumn单元格的数字列坐标”)
userfuser

8

嗨,我遇到了同样的问题..将0.71添加到excel单元格宽度值并将该值赋予

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

例如:列宽= 3.71(excel值)

给出列宽= 4.42

将为输出文件提供相同的单元格宽度。

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

希望这个帮助


5

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

这同样适用于setCellValueByColumnAndRow


4

列宽的autoSize设置为波纹管。这个对我有用。

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

2

这对我有用:

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

一定要加setAuzoSize(false)之前setWidth();作为罗兰提到


请不要添加重复的答案,例如Rolland已定义
M Khalid Junaid

1
是的,但是它正在使用getColumnDimension而不是getColumnDimensionByColumn
Magor Menessy

1

设置列宽的正确方法是使用Jahmic发布的行,但是要特别注意的是,此外,您还必须添加数据之后而不是之前应用样式,否则在某些配置中,列宽为没有申请

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.