PHPDOCX中的中心表

时间:2012-04-04 15:16:33

标签: php ms-word phpdocx

我使用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');

1 个答案:

答案 0 :(得分: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);