2017-02-09 204 views
2

似乎PHPWord需要一个元素来插入\PhpOffice\PhpWord\Shared\Html::addHtml的输出。我想输出HTML字符串的内容制作成表格单元格,下面的例子:PHPWord将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上面有列表项

+1

你有使用'$ html'变量而不是'$ htmlString'作为'addHtml'方法的第二个参数 – hassan

+0

对不起,我在代码块中输入代码块,在我的示例代码中正确引用了变量。我已经更新了问题并增加了更多细节 –

回答

1

试试这个

$table->addRow(); 

$resource_cell_left = $table->addCell(3000); 
$resource_cell_left->addText('Test', array('name' => 'Century Gothic', 'size' => 9, 'bold' => true), array('align'=>'left')); 
$resource_cell_right = $table->addCell(6000); 
$resource_text->addText('Test ', array('name' => 'Century Gothic', 'size' => 9, 'bold' => true), array('align' => 'right')); 

\PhpOffice\PhpWord\Shared\Html::addHtml($resource_cell_right, $html); 

$resource_cell_right->addTextBreak();