2012-04-04 64 views
0

我使用PHPDocx(免費版)動態創建PHP中的msword文檔。PHPDOCX中心表

我無法在表格中居中對齊頁面。我曾嘗試傳入documentation中所述的樣式參數,但沒有喜悅。

有關如何解決此問題的任何想法?

我現在的代碼是;

$docx = new CreateDocx(); 

$valuesTable = array(
    array(
     11, 
     12 
    ), 
    array(
     21, 
     22 
    ), 
); 

$paramsTable = array(
    'jc' => 'center', 
    'border' => 'single', 
    'border_sz' => 20 
); 

$docx->addTable($valuesTable, $paramsTable); 

$docx->createDocx('example_table'); 

回答

0

我有同樣的問題。如果您查看CreateTable源代碼,您可以看到用於對齊generateJC()的方法從不調用,因此傳遞'jc'參數不起作用(這與大多數選項相同)。

您可以覆蓋此創建一個新的類,如:

class SmCreateTable extends CreateTable{ 
    public function createTable() 
    { 
     $this->_xml = ''; 
     $args = func_get_args(); 

     if (is_array($args[0])) { 
      $this->generateTBL(); 
      $this->generateTBLPR(); 

      if(!empty($args[1]['jc'])){ 
       $this->generateJC($args[1]['jc']); 
      } 

      $this->generateTBLW(); 
      if (!empty($args[1]['border'])) { 
       $this->generateTBLBORDERS(); 
       $this->generateTBLBOTTOM(); 
       $this->generateTBLLEFT(); 
       $this->generateTBLTOP(); 
       $this->generateTBLRIGHT(); 
       $this->generateTBLINSIDEH(); 
       $this->generateTBLINSIDEV(); 
      } 

      $this->generateTBLLOOK(); 
      $this->generateTBLOVERLAP(); 
      $intLine = 0; 
      foreach ($args[0] as $datDepth) { 
       $this->generateTR(); 
       $intLine++; 
       foreach ($datDepth as $cont) { 
        $this->generateTC(); 
        $this->generateP(); 
        $this->generateR(); 
        if ($args[1]['font'] != '') { 
         $this->generateRPR(); 
         $this->generateRFONTS($args[1]['font']); 
        } 
        $this->generateT($cont); 
       } 
       $this->cleanTemplateR(); 
      } 
     } 
    } 

    private function cleanTemplateR() 
    { 
     $this->_xml = preg_replace('/__GENERATETR__/', '', $this->_xml); 
    } 
} 

,然後調用:

$table = new SmCreateTable(); 
$table->createTable($valuesTable, $paramsTable);