【发布时间】:2023-03-03 10:10:01
【问题描述】:
似乎 PHPWord 需要一个元素来插入 \PhpOffice\PhpWord\Shared\Html::addHtml 的输出。我正在尝试将 HTML 字符串的内容输出到表格单元格中,示例如下:
//Example HTML
$html = '<h1>Adding element via HTML</h1>';
$html .= '<p>Some well formed HTML snippet needs to be used</p>';
$html .= '<p>With for example <strong>some<sup>1</sup> <em>inline</em> formatting</strong><sub>1</sub></p>';
$html .= '<p>Unordered (bulleted) list:</p>';
$html .= '<ul><li>Item 1</li><li>Item 2</li><ul><li>Item 2.1</li><li>Item 2.1</li></ul></ul>';
$html .= '<p>Ordered (numbered) list:</p>';
$html .= '<ol><li>Item 1</li><li>Item 2</li></ol>';
$table = $section->addTable();
$target = $table->addRow()->addCell(10000)->addText();
\PhpOffice\PhpWord\Shared\Html::addHtml($target, $html);
目标单元格仍然为空,但我可以生成 Word2007 文档而不会出错。我尝试不使用addText() 调用,但生成的文档已损坏。
关于如何实现我的目标有什么建议吗?
编辑:上面的示例 HTML 确实适用于 $target = $table->addRow()->addCell(10000)。我在使用的实际 HTML 中似乎有问题,一些标签似乎在制造问题。我已经去掉了那些不需要的,但现在有一个例外:
BadMethodCallException in AbstractContainer.php line 232:
Cannot add ListItem in TextRun.
这很奇怪,因为在上面的工作示例 HTML 中有列表项
【问题讨论】:
-
你必须使用
$html变量而不是$htmlString作为addHtml方法的第二个参数 -
对不起,我输入的是代码块而不是粘贴,在我的示例代码中,变量被正确引用。我已经更新了问题并添加了更多详细信息