PHPWord替换word模板内容

Composer安装 phpword

composer require phpoffice/phpword

php代码

public function export(){
        $id=input('id');
        $info=db('record a')
            ->join('user b','a.user_id=b.id')
            ->join('school_class c','b.school_class_id=c.id','left')
            ->join('school_class d','b.school_class_id2=d.id','left')
            ->join('school_admin e','a.school_admin_id=e.id','left')
            ->field('a.*,b.nickname,b.username,b.gender,b.age,c.name grade,d.name class,e.name')
            ->where('a.id',$id)->whereNull('a.deletetime')->find();
        if(!$info) $this->error('记录不存在');
        //视频对话
        $result=db('record_video')->where('record_id',$id)->where('status',2)->whereNull('deletetime')->field('result,createtime')->select();
        //测评报告
        $user_answer=db('user_answer')->alias('a')
            ->join('scale b','a.scale_id=b.id')
            ->where('a.user_id',$info['user_id'])
            ->whereTime('a.createtime','between',[strtotime($info['day']),strtotime($info['day'])+24*3600-1])
            ->whereNull('a.deletetime')->order('a.id desc')
            ->field('a.content ans_content,b.name ans_name,a.score ans_score')->select();

        //历史评语
        $record_log=db('record_log')->where('record_id',$id)->select();

        //文档模板
        $templates = './template/ban.docx';
        //声明一个模板对象、读取模板
        $templateProcessor = new \PhpOffice\PhpWord\TemplateProcessor($templates);

        //基础信息  单个设置
        $templateProcessor->setValue('nickname',$info['nickname']);
        $templateProcessor->setValue('gender',$info['gender']==1?'男':'女');
        $templateProcessor->setValue('age',$info['age']);
        $templateProcessor->setValue('grade',$info['grade']);
        $templateProcessor->setValue('class',$info['class']);
        $templateProcessor->setValue('name',$info['name']);
        $templateProcessor->setValue('day',$info['day']);

        //测评报告列表 复制块
        $templateProcessor->cloneBlock('ans_block',count($user_answer),true,false,$user_answer);

        //咨询全流程记录列表  复制块
        foreach ($result as &$item){
            $item['ask_day']=date('Y-m-d',$item['createtime']);
            $ask_result=json_decode($item['result'],true);
            $html='';
            foreach ($ask_result as $v){
                $html.='用户'.$v['user'].':'.$v['str'].'<br/>';
            }
            $item['ask_result']=$html;
        }
        $templateProcessor->cloneBlock('ask_block',count($result),true,false,$result);

        //历史评语  复制行
        $templateProcessor->cloneRow('com_day',count($record_log));
        foreach ($record_log as $k=>$v){
            $templateProcessor->setValue('com_day#'.($k+1), date('Y-m-d',$v['createtime']));
            $templateProcessor->setValue('com_result#'.($k+1), $v['result']);
        }

        $path = $info['nickname'].'_'.$info['day']."_测评报告.docx";
        //生成新的word
        $templateProcessor->saveAs($path);
        //发送到浏览器
        \fast\Http::sendToBrowser($path);
    }

模板样式
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值