PHPExcel和文本换行

66

我知道这行代码可以实现单元格文字自动换行:

$objPHPExcel->getActiveSheet()->getStyle('D1')->getAlignment()->setWrapText(true);

选择了单元格 'D1'。

有没有一种方法可以自动将整个Excel工作表都包装起来,而不是对每个需要包装的单元格使用这段代码?

或者是否有更好的实践技巧用于指定列?


你有没有考虑循环遍历每个单元格并应用包装器? - HamZa
4
循环效率非常低,所以我不建议使用它,但是为一系列单元格设置样式很简单。 - Mark Baker
3个回答

133

应用于一定范围:

$objPHPExcel->getActiveSheet()->getStyle('D1:E999')
    ->getAlignment()->setWrapText(true); 

应用于一列

$objPHPExcel->getActiveSheet()->getStyle('D1:D'.$objPHPExcel->getActiveSheet()->getHighestRow())
    ->getAlignment()->setWrapText(true); 

1
我也遇到同样的问题。它可以完美运行,但是它显示字符串的最后一个单词?我想显示适合单元格的前几个字符? - Gaurav Pant
1
@virus - 也许你需要设置垂直对齐。 - Mark Baker
提醒一下,将范围设置为999会增加文件大小。 - Butsuri
只有在您的电子表格中少于999行时,它才会增加文件大小,请根据您的电子表格大小调整该值。 - Mark Baker

34
$objPHPExcel->getDefaultStyle()->getAlignment()->setWrapText(true);

1
可能是这里最好的答案。我不知道当问题发布时是否存在这种方法,但这绝对是在文档中包装所有单元格文本的巧妙方式。 - Chris
是的,最佳答案是使文档中的所有单元格自动换行,无论哪个工作表。谢谢。 - Birhan Karahasan

0

应用于列

$highestRow = $$objPHPExcel->getActiveSheet()->getHighestRow();
for ($row = 1; $row <= $highestRow; $row++){
    $sheet->getStyle("D$row")->getAlignment()->setWrapText(true);
}

不需要使用“A1:AI100”时,可以使用范围。getStyle('A1:AI100') - M H
@MH 我该如何换行多列,而不是范围。 - Jaber Al Nahian

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