使用composer下载PHPWord到项目中
composer require phpoffice/phpword
创建模板对象
//创建模板对象
$document = new TemplateProcessor(ROOT_PATH.'template/user.docx');
word模板里这样赋值
插入字段
//插入字段
$document->setValue('member_name',$result['member_name']);
$document->setValue('hierarchy',$result['hierarchy']);
如果需要插入图片
//图片处理
if(empty($result['product_display'])){
$document->setValue('product_display','');
}else{
$path = './'.$result['product_display'];
$picParam = ['path'=>$path,'width'=>470,'height'=>110];
$document->setImageValue('product_display',$picParam);
}
保存模板
//保存模板
$document->saveAs('./user.docx');
下载这个保存的文件
//获取html文档的内容(包括html代码)
$result = file_get_contents('user.docx');
echo $result;
//打开缓冲区
ob_start();
header("Cache-Control: public");
Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
//判断浏览器类型
if (strpos($_SERVER["HTTP_USER_AGENT"],'MSIE')) {
header('Content-Disposition: attachment; filename=user.docx');
}else if (strpos($_SERVER["HTTP_USER_AGENT"],'Firefox')) {
Header('Content-Disposition: attachment; filename=user.docx');
} else {
header('Content-Disposition: attachment; filename=user.docx');
}
//不使用缓存
header("Pragma:no-cache");
//过期时间
header("Expires:0");
//输出全部内容到浏览器
ob_end_flush();
如果插入的字段需要换行,那么在控制器里处理数据
$service_name = implode('<w:br />',$service_arr);
如果插入的数据为数组循环出来的时,也需要进行数据处理
$provide = $this->provide->where('pid',$id)->select()->toArray();
$p = [];
foreach ( $provide as $k => $v ){
$p[] = ($k+1).'、产品类别'.$v['category_name'].',上市时间'.$v['start_time'].'月至'.$v['end_time'].'月,上年产能'.$v['capacity_lastyear'].'斤(头、羽、尾、台、人次、间数、笔),今年预计产能'.$v['capacity_thisyear'].'斤(头、羽、台、人次、间数、笔)。';
}
$pStr = implode('<w:br />',$p);