我使用laravel,但我认为这个问题更多是关于php word。
此软件包是否有可能在某些时候导出带有自定义文本的单词?
例如,我的单词模板包含三个要更改的位置。因此,可以使用phpword在这三个位置导出带有自定义文本的模板吗?
我可以只更改部分文本还是必须更改所有段落?
感谢您的信息。
答案 0 :(得分:1)
您可以使用setValue()
方法替换文本。
取决于所使用的版本,版本0.12.0及更高版本 \ PhpOffice \ PhpWord \ TemplateProcessor
public function setValue($search, $replace, $limit = self::MAXIMUM_REPLACEMENTS_DEFAULT)
{
if (is_array($search)) {
foreach ($search as &$item) {
$item = self::ensureMacroCompleted($item);
}
} else {
$search = self::ensureMacroCompleted($search);
}
if (is_array($replace)) {
foreach ($replace as &$item) {
$item = self::ensureUtf8Encoded($item);
}
} else {
$replace = self::ensureUtf8Encoded($replace);
}
if (Settings::isOutputEscapingEnabled()) {
$xmlEscaper = new Xml();
$replace = $xmlEscaper->escape($replace);
}
$this->tempDocumentHeaders = $this->setValueForPart($search, $replace, $this->tempDocumentHeaders, $limit);
$this->tempDocumentMainPart = $this->setValueForPart($search, $replace, $this->tempDocumentMainPart, $limit);
$this->tempDocumentFooters = $this->setValueForPart($search, $replace, $this->tempDocumentFooters, $limit);
}
方法链接-> https://github.com/PHPOffice/PHPWord/blob/develop/src/PhpWord/TemplateProcessor.php#L208
0.12.0之前的版本使用\ PhpOffice \ PhpWord \ Template
public function setValue($search, $replace, $limit = -1)
{
foreach ($this->headerXMLs as $index => $headerXML) {
$this->headerXMLs[$index] = $this->setValueForPart($this->headerXMLs[$index], $search, $replace, $limit);
}
$this->documentXML = $this->setValueForPart($this->documentXML, $search, $replace, $limit);
foreach ($this->footerXMLs as $index => $headerXML) {
$this->footerXMLs[$index] = $this->setValueForPart($this->footerXMLs[$index], $search, $replace, $limit);
}
}