此方法只能将多个简历以分页形式展示,不能分开批量导出多个文件的形式,如果有做出来的欢迎留言相告,谢谢!!!
就用两个方法(也可以合到一个方法中),直接上干货,里面有注释自己去看:
//这个方法中写导出逻辑
public function ceshi(Request $request)
{
//先查询数据,定义多个模型关联
$data = Technician::where($where)->with(['user' => function($query) {
$query->field('id,nickname,phone,avatar,sex,age');
},'exs' => function($query) {
$query->field('id,title');
},'tags' => function($query) {
$query->field('id,title');
}])->order('id desc')->paginate(10)->toArray();
//注意这里的头部一定要拿到循环数据的外面,只能有一个头部,不然只能导出一条数据
$content="
<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:w='urn:schemas-microsoft-com:office:word' xmlns='http://www.w3.org/TR/REC-html40'>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
<xml><w:WordDocument><w:View>Print</w:View></xml>
</head>";
//这里循环数据并调用下面的ce方法填充数据,并拼接
foreach ($data['data'] as $k=>$v) {
$content.= $this->ce($v);
}
//打开缓冲区(一定要加上缓冲区,先把输出存到里面,再一起输出)
ob_start();
//将数据输出浏览器
echo $content;
header('Cache-Control: public');
//定义文档名称
header('Content-Disposition: attachment; filename='.'简历.doc');
header('Pragma:no-cache');
header('Expires:0');
//开始执行下载
Header('Content-type: application/octet-stream');//声明下载文件的类型
Header('Accept-Ranges: bytes');
ob_end_flush();//输出全部内容到浏览器
}
//这个方法中用来拼接写简历模板,并填充数据
public function ce($v)
{
$content= "<body>
<h1 style='text-align: center'>{$v['user']['nickname']}的简历</h1>
<table border='1' cellpadding='3' cellspacing='0' style='height: 92px;'>
<tr>
<td width='93' valign='center' colspan='2' >姓名</td>
<td width='160' valign='center' colspan='4' >{$v['user']['nickname']}</td>
<td width='89' valign='center' colspan='2' >性别</td>
<td width='156' valign='center' colspan='3' >";
if($v['user']['sex'] == 1){
$content.= '男';
} else if($v['user']['sex'] == 0){
$content.= '女';
}
$content.= "</td>
<td width='125' colspan='2' rowspan='3' align='center' valign='middle' ><img src='https://www.hbjianhong.com/Public/images/QRCode.png' width='120' height='120' /></td>
</tr>
<tr>
<td width='93' valign='center' colspan='2' >年龄</td>
<td width='160' valign='center' colspan='4' >{$v['user']['age']}</td>
<td width='89' valign='center' colspan='2' >学历</td>
<td width='156' valign='center' colspan='3' >大专</td>
</tr>
<tr>
<td width='93' valign='center' colspan='2' >手机</td>
<td width='160' valign='center' colspan='4' >{$v['user']['phone']}</td>
<td width='89' valign='center' colspan='2' >服务城市</td>
<td width='156' valign='center' colspan='3' >{$v['city']}</td>
</tr>
<tr>
<td width='93' valign='center' colspan='2' >期望薪资</td>
<td width='160' valign='center' colspan='4' >{$v['exs']['title']}</td>
<td width='89' valign='center' colspan='2' >工作经验</td>
<td width='156' valign='center' colspan='3' >{$v['years']}</td>
<td width='89' valign='center' >工作状态</td>
<td width='50' valign='center'>";
if($v['work_status'] == 1){
$content.= '离职-随时到岗';
} else if($v['work_status'] == 2){
$content.= '在职-考虑状态';
}else if($v['work_status'] == 3){
$content.= '离职-需要准备';
}
$content.= "
</td>
</tr>
<tr>
<td width='93' valign='center' colspan='2' style='width:93px;'>籍贯</td>
<td width='530' valign='center' colspan='11' >{$v['hometown']}</td>
</tr>
<tr>
<td width='93' valign='center'>标签</td>
<td width='570' valign='center' colspan='12' >
";
foreach ($v['tags'] as &$vo){
$content.= $vo['title'].' ';
}
$content.= "
</td>
</tr>
<tr>
<td width='93' valign='center' colspan='2' rowspan='3'>个人简介</td>
<td width='570' valign='center' colspan='12' rowspan='3' >{$v['Introduction']}</td>
</tr>
</table>
<br>
<br>
<br>
<br>
</body>";
return $content;
}