Thinkphp 导出数据生成word文件


public function word_admin(){
$dates=date('Y-m-d',time());
$data=request()->param(); //接收post,get值
vendor("PHPWord.PHPWord");
vendor('PHPWord.PHPWord.IOFactory');
// New Word Document
$PHPWord = new \PHPWord();
$sectionStyle = array(
'orientation' => null,
'marginTop' => 700,
'marginBottom' => 600
);
$section = $PHPWord->createSection($sectionStyle);
$pid=Db::name('ucenter_member')->where('id',$data['id'])->value('pid');
//安检员
$qiye1 = Db::view('enterprise','id,name')
->view('ucenter_member','id as uid','ucenter_member.id=enterprise.num_id')
->where('ucenter_member.pid',$pid)
->where('ucenter_member.type',0)
->where('enterprise.uid', $data['id']);
//完整查询方法
$qiye1=$qiye1->select();
$qiyemum1=count($qiye1); //计算企业数
$num1=0; //初始化隐患总数
$save_num1=0; //初始化整改隐患总数
foreach($qiye1 as $key=>&$val){
//时间
if(!empty($data['date'])){
$startTime=$data['date'].'-1';
$endTime=date('Y-m-d',strtotime("$startTime +1 month"));
$val['num']=Db::name('enterprise_detail')->where('enterprise_id',$val['id'])->whereTime('create_time', 'between', [$startTime,$endTime])->count();
$num1+= (int) ($val['num']); //计算隐患总数
$val['save_num']=Db::name('enterprise_detail')->where('enterprise_id',$val['id'])->whereTime('create_time', 'between', [$startTime,$endTime])->where('save_status',1)->count();
$save_num1+= (int) ($val['save_num']); //计算隐患总数
}else{
$val['num']=Db::name('enterprise_detail')->where('enterprise_id',$val['id'])->count();
$num1+= (int) ($val['num']); //计算隐患总数
$val['save_num']=Db::name('enterprise_detail')->where('enterprise_id',$val['id'])->where('save_status',1)->count();
$save_num1+= (int) ($val['save_num']); //计算隐患总数
}
}
$qiye=$qiye1;
$num=$num1;
$save_num=$save_num1;
$qiyemum=1;
//获取检查人名称
$name = Db::name('ucenter_member')->where('id', $data['id'])->value('username');
$section->addTextBreak(6);
$section->addText($qiye[0]['name'], ['color' => '000', 'size' => 30, 'bold' => true], ['align' => 'center']);
$section->addTextBreak(3);
$section->addText('隐患排查报告', ['color' => '000', 'size' => 40, 'bold' => true], ['align' => 'center']);
$section->addTextBreak(30);
$section->addText('北京百世寰宇注册安全工程师事务所有限责任公司', ['color' => '000', 'size' => 18], ['align' => 'center']);
$section->addTextBreak(1);
$section->addText(date('Y年m月d日',time()), ['color' => '000', 'size' => 18], ['align' => 'center']);
$section->addPageBreak(); //分页符
$section->addText($name . '检查情况如下:', ['color' => '000', 'size' => 14]);
$section->addText($name . '共检查企业'.$qiyemum.'家,发现隐患'.$num.'条,已整改隐患'.$save_num.'条', ['color' => '000', 'size' => 14]);
$section->addTextBreak(1); //换行(行数)
$section->addText('检查企业名录', ['color' => '000', 'size' => 20, 'bold' => true], ['align' => 'center']);
$styleTable1 = array('borderColor' => '000', 'borderSize' => 6, 'cellMargin' => 50);//表格属性
$styleFirstRow1 = array('bgColor' => '000');
$PHPWord->addTableStyle('qiye', $styleTable1, $styleFirstRow1);
$table = $section->addTable('qiye');
$table->addRow(400);
$table->addCell(1000)->addText('序号', ['size' => 12]);
$table->addCell(5000)->addText('企业名称', ['size' => 12]);
$table->addCell(1500)->addText('隐患总数', ['size' => 12]);
$table->addCell(1500)->addText('已整改数', ['size' => 12]);
foreach($qiye as $k=>$v){
$table->addRow(400);
$table->addCell(1000)->addText($k+1, ['size' => 12]);
$table->addCell(5000)->addText($v['name'], ['size' => 12]);
$table->addCell(1500)->addText($v['num'], ['size' => 12]);
$table->addCell(1500)->addText($v['save_num'], ['size' => 12]);
}
$table->addRow(400);
$table->addCell(1000)->addText($qiyemum+1, ['size' => 12]);
$table->addCell(5000)->addText('总计', ['size' => 12]);
$table->addCell(1500)->addText($num, ['size' => 12]);
$table->addCell(1500)->addText($save_num, ['size' => 12]);
$section->addPageBreak(); //分页符
$footer = $section->createFooter();
$footer->addPreserveText('第'.'{PAGE}'.'页',['size' => 10], ['align' => 'center']);
$filename=$name.'隐患排查报告'; //定义文件名
//按公司id
if(!empty($data['id'])){
$filename=Db::name('num_enterprise')->where('id',$data['id'])->value('name');

}
$styleTable = array('borderColor'=>'000','borderSize'=>6,'cellMargin'=>50);//表格属性
$styleFirstRow = array('bgColor'=>'000');
$PHPWord->addTableStyle('myTable', $styleTable, $styleFirstRow);
$table = $section->addTable('myTable'); //添加表格
//查询处理要导出的数据
//$info1=Db::view('ucenter_member','username')
//->view('enterprise','id,num_id,name,type as enterprise_type,create_time','enterprise.uid=ucenter_member.id')
//->view('num_enterprise','type','num_enterprise.id=enterprise.num_id')
//->view('enterprise_type','title as enterprise_type','enterprise_type.id=num_enterprise.type')
//->view('enterprise_detail','enterprise_id,course_id,picture,brief,level,save_picture,save_brief,uid,create_time','enterprise_detail.enterprise_id=enterprise.id')
//->view('course','order,title,course_type,level,introduction','course.id=enterprise_detail.course_id')
//->view('course_type','title as course_type','course_type.id=course.course_type')
//->where('ucenter_member.type',1); //备注:与后台的区别之处 去掉测试人员的数据 只输出制定类型检查人的数据
$info1=Db::view('enterprise_detail','enterprise_id,course_id,picture,cover,brief,uid,level,introduction,create_time,save_uid,save_status,save_picture,save_brief,save_time')
->view('enterprise','id,name,type as enterprise_type,num_id,create_time','enterprise.id=enterprise_detail.enterprise_id')
->view('enterprise_type','title as enterprise_type','enterprise_type.id=enterprise.type')
->view('course','id as course_id,order,title,course_type,level,introduction','course.id=enterprise_detail.course_id')
->view('course_type','title as course_type','course_type.id=course.course_type')
->view('ucenter_member','username','ucenter_member.id=enterprise.num_id')
->where('ucenter_member.pid',$pid)
->where('enterprise_detail.uid',$data['id']);
//时间
if(!empty($data['date'])){
$startTime=$data['date'].'-1';
$endTime=date('Y-m-d',strtotime("$startTime +1 month"));
$info1->whereTime('enterprise_detail.create_time', 'between', [$startTime,$endTime]);
}
//完成查询
$info1=$info1->where('enterprise_detail.uid',$data['id'])->order('enterprise_detail.create_time asc')->select();

$info=$info1;
//循环隐患内容
$fontStyle = array('size'=>12); //字体属性
foreach($info as $k=>&$value) {
$value['username']=Db::name('ucenter_member')->where('id',$value['uid'])->value('username');
$table->addRow(0);//换行
$qiyename=$table->addCell(9000);
if(strlen($value['username'])>90){
$value['username']=substr($value['username'],0,90);
}
$qiyename->addText(($k+1).'.企业名称:'.$value['name'], $fontStyle);
//$table->addCell(3000)->addText('楼宇:暂无', $fontStyle);
$table->addRow(0);//换行
$table->addCell(3000)->addText('检查人:'.substr($value['username'],0,24), $fontStyle);
$table->addCell(3000)->addText('类型:'.$value['enterprise_type'], $fontStyle);
$value['create_time']=substr($value['create_time'],0,-8);
$table->addCell(3000)->addText('检查时间:'.$value['create_time'], $fontStyle);
$table->addRow(660);//换行
$fagui=$table->addCell(9000);
$fagui->addText('法规依据:'.$value['introduction'], $fontStyle);
$table->addRow(1048);//换行
$miaoshu=$table->addCell(4500);
$miaoshu->addText('隐患描述:'.$value['brief'], ['size'=>11]);
if(!empty($value['save_brief'])){
$table->addCell(4500)->addText('整改描述:'.$value['save_brief'], ['size'=>11]);
}else{
$table->addCell(4500)->addText('整改描述:未整改', ['size'=>11]);
}
$table->addRow(400);//换行
$imageStyle = array('width'=>300, 'height'=>300, 'align'=>'center');
if(!empty($value['picture'])){
$value['picture']=strstr($value['picture'], 'uploads');
}else{
$value['picture']='uploads/enterprise/wutupian.png';
}
$table->addCell(4500)->addImage('./'.$value['picture'],$imageStyle);
if(!empty($value['save_picture'])){
$value['save_picture']=strstr($value['save_picture'], 'uploads');
$table->addCell(4500)->addImage('./'.$value['save_picture'],$imageStyle);
}else{
$table->addCell(4500)->addText('', $fontStyle);
}

}

猜你喜欢

转载自www.cnblogs.com/Mr-zhangwenqiang/p/11935935.html
今日推荐