首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用PHPWord TemplateProcessor更改Word文件的标题

如何使用PHPWord TemplateProcessor更改Word文件的标题
EN

Stack Overflow用户
提问于 2022-10-10 11:38:43
回答 2查看 168关注 0票数 1

我正在尝试使用下面的代码从模板创建一个.docx文件。

代码语言:javascript
运行
复制
$phpWord = new \PhpOffice\PhpWord\TemplateProcessor(storage_path().'\app\public\sample\sample.docx');
$phpWord->setValue('days', '365');
$phpWord->setValue('what', 'Benchmark');
$phpWord->setValue('test', 'KKKK');
$phpWord->setValue('best', 'MMMM');
$phpWord->saveAs(storage_path().'\app\public\sample\final.docx');

sample.docs文件类似于。

但是,当我运行上述代码时,生成的final.docx如下所示。

、测试、最好的变量被更新,但是、days、--什么是--没有更新。days和在.docx文档的标题中是什么?但是我不知道如何使用PHPWord更新它。

示例sample.doc文件链接是这里

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-10-19 14:48:15

重新格式化文档.

您提供的模板在标题中有一个“内容控件”,它似乎与库或代码不兼容。突出显示标题,删除内容控件,如下所示:

..and voila

不需要对代码进行重大更改。为了简单起见,我重写了它。

代码语言:javascript
运行
复制
$in = storage_path()."\app\public\sample\sample.docx";
$out = storage_path().'\app\public\sample\final.docx';

$phpWord = new \PhpOffice\PhpWord\TemplateProcessor($in);

$templateVars = [
  'days'=>'365',
  'what'=>'Benchmark',
  'test'=>'KKKK',
  'best'=> 'MMMM'
];

$phpWord->setValues($templateVars);

$phpWord->saveAs($out);
票数 2
EN

Stack Overflow用户

发布于 2022-10-12 15:37:52

尝试使用replaceBlock函数将整个标题块替换为已配置的标题。为了做到这一点,您需要在word文件中声明这样的块:

代码语言:javascript
运行
复制
${block_name}
The text you want to replace.
${/block_name}

要用另一个代码块替换该块,请将这一行代码实现到PHP中:

代码语言:javascript
运行
复制
$phpWord->replaceBlock('block_name', "CIS Microsoft {$days} Foundations {$what}");

不是最干净的解决方案,但总比没有好。希望我能帮^

附带说明:

您可以通过以下方法更改多个值:

代码语言:javascript
运行
复制
$phpWord->setValues(array('test' => 'KKKK', 'best' => 'MMMM'));

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74014334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档