0

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

我无法让表格在页面中居中对齐。我已尝试按照文档中的说明传递样式参数,但没有任何乐趣。

有想法该怎么解决这个吗?

我当前的代码是;

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

1 回答 1

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);
于 2012-09-28T15:15:47.327 回答