2014-04-04 33 views
0

我正在使用PHPExcel生成訂單的Excel文件。PHPExcel單元格合併設置的字體較小,以適應固定寬度和高度的合併單元格

我有一些約束

  • 細胞被合併
  • 細胞排列垂直和水平居中
  • 文本被包裹並以多行
  • 文本需要適合合併單元格:如果過長以適合設置字體較小但保留文本換

我已經完成了前3,但我不能達到最後的要求。

例:

我有什麼

enter image description here

我需要什麼

enter image description here

行和列是標準寬度和高度和可以」不要改變由於其他單元格的寬度和高度。客戶端的設計....

我曾嘗試:

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

我需要的文字只有在不適合合併的單元格時纔會更小

感謝您的任何建議。

回答

0

我找到的唯一解決方案實際上是統計行數並相應地設置字體。

如果數串的行是較大的號合併單元的行的(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); 

    } 
相關問題