通过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;
以上就是我所用到的方法,哪位大神如果有什么好的建议或方法 ,可以评论!