phpword模板处理 生成word

 

PHP使用phpword替换模板内容,不多说,直接上代码

复制代码
/**
     * @param $param
     * @throws \PhpOffice\PhpWord\Exception\CopyFileException
     * @throws \PhpOffice\PhpWord\Exception\CreateTemporaryFileException
     * 生成教学word
     */
    public function testDataToWord($param){
        $data = json_decode(ExcelToWordService::$data,true);//数据
        $document = new TemplateProcessor('/home/work/XXXX/Lesson_plan_module_10_1_3.docx');//模板地址
        Settings::setOutputEscapingEnabled(true);//输出转义
        $document->setValue('course_theme', $data[3][2]);
        $document->setValue('course_time', $data[5][2]);
        $document->setValue('course_target', $data[6][2]);
        $document->setValue('course_focus', $data[7][2]);
        $document->saveAs('./target.docx');
        ob_clean();
        ob_start();
        $fp = fopen('./target.docx',"r");
        $file_size = filesize('./target.docx');
        Header("Content-type:application/octet-stream");
        Header("Accept-Ranges:bytes");
        Header("Accept-Length:".$file_size);
        Header("Content-Disposition:attchment; filename=".'XXXX.docx');//生成的word名称
        $buffer = 1024;
        $file_count = 0;
        while (!feof($fp) && $file_count < $file_size){
            $file_con = fread($fp,$buffer);
            $file_count += $buffer;
            echo $file_con;
        }
        fclose($fp);
        ob_end_flush();
    }
复制代码

问题1,在替换中会遇到转义字符输出错乱的情况,加上如下代码就OK了……

\PhpOffice\PhpWord\Settings::setOutputEscapingEnabled(true);

 

附文档链接:https://phpword-zh.readthedocs.io/zh_CN/latest/general.html#id3

posted @   瑾琛  阅读(811)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
点击右上角即可分享
微信分享提示