【问题标题】:Centre Table In PHPDOCXPHPDOCX 中的中心表
【发布时间】:2012-04-04 15:16:33
【问题描述】:

我正在使用PHPDocx(免费版)在 PHP 中动态创建一个 msword 文档。

我无法让表格在页面中居中对齐。我尝试过传入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');

【问题讨论】:

    标签: php ms-word phpdocx


    【解决方案1】:

    我遇到了同样的问题。如果您查看 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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      相关资源
      最近更新 更多