1

我是使用这个 PHPWord 库的新手,到目前为止我很喜欢它。

如果有人可以帮助我解决这个问题或为我确认这是否可能,我将不胜感激。

似乎需要按照您希望它们出现在页面上的顺序创建这些部分,但我正在寻找一种重新排序它们的方法,或者更好的是,甚至将它们相互嵌套。

$pSectionPointer = $oPHPWord->addSection();
$pAnotherSectionPointer = $oPHPWord->addSection();
$pFirstSectionPointer = $oPHPWord->addSection();

它们按照我构造它们的顺序出现在文档中,这在某些时候很好,但在我的代码中,我可能希望也可能不希望根据我的代码中的一些新数据更改部分的顺序。所以我想$pFirstSectionPointer$pSectionPointer.

我怎样才能做到这一点?

我尝试使用 API 中提供的设置器设置/更改部分的 elementId 和其他属性以尝试更改顺序,但没有对每种方法进行解释,而且它们似乎都没有做我想做的事情。

4

2 回答 2

2

稍微研究一下 PhpWord 代码后,这些(嵌套或重新排序)似乎都不可能:节只允许在主级别(不在另一个节内),并且库不提供任何更改节排序的方法(生成的部分顺序看起来基于 $sections 数组,其中新部分被附加 - 在 addSection 函数调用时 - 在 PhpWord.php 中,并且该数组不能通过 API 调用修改)。

如果您确实需要对这些部分进行重新排序,您可以尝试使用您需要的函数自己修改一下 PhpWord.php 文件:我用简单的内容和一个简单的函数快速测试了这个,只需反转现有的部分大批。有了这些,我得到了一个具有相反部分顺序的结果文档,没有问题......

于 2015-05-20T15:45:33.830 回答
0

使用最新的 dev-develop 版本(或 0.15 版),您可以通过将 callable 传递给 $phpWord->sortSections(...) 对部分进行排序。在内部,它将使用 uasort 对数组进行排序。

于 2018-03-06T21:58:40.993 回答