我正在开展一个需要创建.docx
文档的项目。我正在使用PHPWord,加载模板然后保存文件。这个文档有很多嵌套表,PHPWord在模板中替换一些表后会破坏表。
所以我决定将文档保存为Word XML文档(.xml
)并自行替换。我将文本加载到变量中,执行替换,然后另存为新的word文档。我的问题是,我不知道如何使用.docx
创建.xml
文档。
您是否有一些我可以使用的代码片段?
感谢您的帮助
我已经看到下面的代码了。它会保存文件,但是当我尝试使用word打开时,它会给我无效的文档
$xmlString = simplexml_load_file($this->config->application->fileTemplateFolder.'coi.xml')->asXML();
$xmlString = str_replace('${coi_number}', $coi['application_number'], $xmlString);
$path = $this->config->application->fileTemplateFolder.'test.docx';
$zip = new ZipArchive();
$zip->open($path, ZipArchive::CREATE);
$zip->addFromString("word/document.xml", $xmlString);
$zip->close();
答案 0 :(得分:0)
以下是我解决问题的方法:
private function CreateWordDocument($xmlString) {
$templateFolder = $this->config->fileTemplateFolder;
if(!endsWith($templateFolder, '/'))
$templateFolder = $templateFolder.'/';
$temp_file = tempnam(sys_get_temp_dir(), 'coi_').'.docx';
copy($templateFolder. 'coi.docx', $temp_file);
$zip = new ZipArchive();
if($zip->open($temp_file)===TRUE) {
$zip->deleteName('word/document.xml');
$zip->addFromString("word/document.xml", $xmlString);
$zip->close();
return $temp_file;
}
else {
return null;
}
}