PHPExcel单元格合并将字体设置为更小,以适合具有固定宽度和高度的合并单元格

PHPExcel单元格合并将字体设置为更小,以适合具有固定宽度和高度的合并单元格,php,phpexcel,Php,Phpexcel,我正在使用PHPExcel为订单生成Excel文件 我有一些限制: 单元格被合并 单元格与中心垂直和水平对齐 文本被包装在多行上 文本需要适合合并单元格:如果太长而不适合合并单元格,则设置较小的字体,但保持文本换行 我已经完成了前3项,但无法达到最后一项要求 例如: 我所拥有的 我需要什么 行和列是标准宽度和高度,不能因其他单元格的宽度和高度而更改。客户端设计 我试过: $this->excel->getActiveSheet()->mergeCells('A28:C3

我正在使用PHPExcel为订单生成Excel文件

我有一些限制:

单元格被合并 单元格与中心垂直和水平对齐 文本被包装在多行上 文本需要适合合并单元格:如果太长而不适合合并单元格,则设置较小的字体,但保持文本换行 我已经完成了前3项,但无法达到最后一项要求

例如:

我所拥有的

我需要什么

行和列是标准宽度和高度,不能因其他单元格的宽度和高度而更改。客户端设计

我试过:

    $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);

  }