PhpOffice\PhpWord - TemplateProcessor添加列表

iyfjxgzm  于 2023-06-28  发布在  PHP
关注(0)|答案(3)|浏览(171)

我正在使用PhpOffice库。是否有任何选项如何取代变量在docx文件与有序列表?
使用templateProcessor方法setComplexValue,我可以用代码添加文本

$title = new \PhpOffice\PhpWord\Element\TextRun();
$title->addText('This title has been set ', array('bold' => true, 'italic' => true, 'color' => 'blue'));
$title->addText('dynamically', array('bold' => true, 'italic' => true, 'color' => 'red', 'underline' => 'single'));
$templateProcessor->setComplexBlock('title', $title);

所以我尝试了新列表的代码,但它不起作用。

$list = new \PhpOffice\PhpWord\Element\ListItem();
$list->addListItem('List item 1');
$list->addListItem('List item 2');
$templateProcessor->setComplexValue('list', $list);

有什么想法吗?谢谢

t3irkdon

t3irkdon1#

我也没有找到解决方案,我已经用文本和换行符做了。这个解决方案适合我的需要。也希望有人分享一下列表的解决方案。

$text = new \PhpOffice\PhpWord\Element\TextRun();
$text->addText('* List item 1');
$text->addTextBreak(1);                
$text->addText('* List item 2');
$text->addTextBreak(1);
$templateProcessor->setComplexValue('list', $list);
ckx4rj1h

ckx4rj1h2#

也许有人会觉得这个有用
单据档案(模板)应为:

${block}
        ${item} <---- in MS Word, make this line a List Item
    ${/block}

PHP应该是这样的:

for($i=0;$i<count($YOUR_LIST_ITEMS);$i++) {
        $replacements[]= array('item' => $YOUR_LIST_ITEMS[$i]);
    }
    $templateProcessor->cloneBlock('block', 0, true, false, $replacements);
uurv41yg

uurv41yg3#

您应该使用setComplexBlock

相关问题