PHPExcel单元格合并将字体设置为更小,以适合具有固定宽度和高度的合并单元格
我正在使用PHPExcel为订单生成Excel文件 我有一些限制: 单元格被合并 单元格与中心垂直和水平对齐 文本被包装在多行上 文本需要适合合并单元格:如果太长而不适合合并单元格,则设置较小的字体,但保持文本换行 我已经完成了前3项,但无法达到最后一项要求 例如: 我所拥有的 我需要什么 行和列是标准宽度和高度,不能因其他单元格的宽度和高度而更改。客户端设计 我试过:PHPExcel单元格合并将字体设置为更小,以适合具有固定宽度和高度的合并单元格,php,phpexcel,Php,Phpexcel,我正在使用PHPExcel为订单生成Excel文件 我有一些限制: 单元格被合并 单元格与中心垂直和水平对齐 文本被包装在多行上 文本需要适合合并单元格:如果太长而不适合合并单元格,则设置较小的字体,但保持文本换行 我已经完成了前3项,但无法达到最后一项要求 例如: 我所拥有的 我需要什么 行和列是标准宽度和高度,不能因其他单元格的宽度和高度而更改。客户端设计 我试过: $this->excel->getActiveSheet()->mergeCells('A28:C3
$this->excel->getActiveSheet()->mergeCells('A28:C32');
$this->excel->getActiveSheet()->getStyle('A28')->getAlignment()->applyFromArray(
array(
'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
'vertical' => PHPExcel_Style_Alignment::VERTICAL_CENTER,
'rotation' => 0,
'wrap' => true
)
)->setShrinkToFit(true);
以及上述各项的任何其他组合:
$this->excel->getActiveSheet()->mergeCells('A28:C32');
$this->excel->getActiveSheet()->getStyle('A28:C32')->getAlignment()->applyFromArray(
array(
'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
'vertical' => PHPExcel_Style_Alignment::VERTICAL_CENTER,
'rotation' => 0,
'wrap' => true
)
)->setShrinkToFit(true);
//or this
$this->excel->getActiveSheet()->mergeCells('A28:C32')->getAlignment()->setWrapText(true)->setShrinkToFit(true);
我知道
$this->excel->getActiveSheet()->getStyle("A1")->getFont()->setSize(10);
但是,我需要的文本更小,只有当它不适合合并的单元格
谢谢你的建议。我找到的唯一解决办法是实际计算行数并相应地设置字体 在我的例子中,如果字符串的行数大于合并单元格的行数5,则将字体设置得更小
if (substr_count($return_to, "\n") <= 4){ //count 5 lines or less -> font = 10
$this->excel->getActiveSheet()->getStyle("A28")->getFont()->setSize(10);
}else{ //count more than 5 lines -> font = 9
$this->excel->getActiveSheet()->getStyle("A28")->getFont()->setSize(9);
}