php 导出word

通过phpword类来实现此功能,首先确定word模板(docx格式的),我们首先要替换的是姓名,电话。现在把这两个值用变量代替,模板里面的变量样式为 ${name} ,如下:

 

前提确定好了,下面开始干活

 

1、通过compaser安装phpword包:

composer require phpoffice/phpword

 

2、我把模板文件放在项目public下面,调用类库然后引入文件

        include_once "../vendor/autoload.php";
        $tmp = new \PhpOffice\PhpWord\TemplateProcessor('../public/模板.docx');//打开模板
        $tmp->setValue('name','李四');//替换变量name
        $tmp->setValue('phone','18888888889');//替换变量phone

        //循环放入
    $rows=count($res);//总行数  $res为查询出来的二维数组
    $tmp->cloneRow('date_time',$rows);//复制行
    for($i=0;$i<$rows;$i++){
        $tmp->setValue("date_time#".($i+1),$res[$i]['date_time']);//替换变量  date_time字段名称
    }    
     $file_name = "测试".date('Y-m-d').".docx"; //生成测试带时间的文件名称
     $tmp->saveAs($file_name);//另存为到pubilc下面
        //Cache::set('file_name',$file_name);//我放在缓存里 方便下一个方法获取

  

3、因为我的需求是每次后需要下载文件并删除,所以我又写了一个方法来实现文件下载和删除

        //$file_name = Cache::get('file_name');
        //Cache::set('file_name','');
        unlink("../public/".$file_name);
        return $file_name;     

以上就是我所用到的方法,哪位大神如果有什么好的建议或方法 ,可以评论!

posted @ 2021-12-07 15:37  小ྀ青ྀ年້  阅读(308)  评论(0编辑  收藏  举报