2017-05-24 15 views
0

私は.docxドキュメントを作成する必要があるプロジェクトに取り組んでいます。私はPHPWordを使って、テンプレートをロードしてからファイルを保存していました。このドキュメントには多くのネストされたテーブルがあり、PHPWordはテンプレート内のいくつかの置換の後にテーブルを分割しています。PHP:.xmlを使用して.docxドキュメントを作成する

文書をWord XML文書(.xml)として保存し、自分で置き換えることにしました。私は変数にテキストを読み込み、置き換えて新しい単語文書として保存します。私の問題は、.xmlを使用して.docx文書を作成する方法がわからないことです。

使用できるコードスニペットはありますか?任意の助け

おかげで


私は以下のコードの一部になってきました。これは、ファイルが保存されますが、私は言葉を使用して開こうとすると、それは私に無効なドキュメントここ

$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

はい、私はよこの投稿の同じことを試してみてください:https://stackoverflow.com/questions/3566677/problem-saving-edited-zip-archive-docxそれは私のためには機能しません –

+0

私は確信しています1つのXMLファイルだけではなく、.docxファイルに格納されます。おそらく、新しいファイルのzip構造でそれらを複製する必要があります。 – amphetamachine

答えて

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; 
    } 
} 
関連する問題