2012-04-04 38 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);