0

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');
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 に答える