PHP:使用.xml创建.docx文档

PHP:使用.xml创建.docx文档,php,xml,zip,phpword,Php,Xml,Zip,Phpword,我正在做一个项目,需要创建一个.docx文档。我正在使用PHPWord,加载一个模板,然后保存文件。这个文档有很多嵌套的表,PHPWord在模板中进行了一些替换之后正在破坏这些表 因此,我决定将该文档保存为Word XML文档(.XML),然后自己进行替换。我将把文本加载到一个变量中,进行替换,然后另存为一个新的word文档。我的问题是,我不知道如何使用.xml创建.docx文档 你能给我一些代码片段吗 谢谢你的帮助 我来看看下面的代码。它保存了文件,但当我试图用word打开时,它给了我无效的

我正在做一个项目,需要创建一个
.docx
文档。我正在使用PHPWord,加载一个模板,然后保存文件。这个文档有很多嵌套的表,PHPWord在模板中进行了一些替换之后正在破坏这些表

因此,我决定将该文档保存为Word XML文档(
.XML
),然后自己进行替换。我将把文本加载到一个变量中,进行替换,然后另存为一个新的word文档。我的问题是,我不知道如何使用
.xml
创建
.docx
文档

你能给我一些代码片段吗

谢谢你的帮助


我来看看下面的代码。它保存了文件,但当我试图用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();

下面是我如何解决这个问题的:

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;
    }
}

你有没有任何有效的尝试呢?是的,我正在尝试与这篇文章相同的事情:我确信一个.docx文件中的zip文件内容比一个XML文件中的内容要多。您可能需要在新文件的zip结构中复制它们。