<?php
namespace app\admin\controller;
use think\Db;
//导出管理
class Daochu extends Common
{
//第二种报表
public function exporttwo(){
// 引入类库
$parking_length=$_GET['parking_length'];
$rank=$_GET['rank'];
$rank_arr=$this->time_differ($rank);
// 文件名和文件类型
$fileName = "导出时长超过x小时的车辆汇总".date("Y-m-d H:i:s");
$fileType = "xlsx";
// 模拟获取数据
//$data = self::getData();
$obj =new \PHPExcel();
// 以下内容是excel文件的信息描述信息
$obj->getProperties()->setCreator(''); //设置创建者
$obj->getProperties()->setLastModifiedBy(''); //设置修改者
$obj->getProperties()->setTitle(''); //设置标题
$obj->getProperties()->setSubject(''); //设置主题
$obj->getProperties()->setDescription(''); //设置描述
$obj->getProperties()->setKeywords('');//设置关键词
$obj->getProperties()->setCategory('');//设置类型
$data=Db::table("parking_record")->field("license_go_in,time_go_in,time_go_out,owner,parking_length")->select();
//echo Db::table("parking_record")->getLastSql();die;
//print_r($data);die;
// 设置当前sheet
$obj->setActiveSheetIndex(0);
// 设置当前sheet的名称
$obj->getActiveSheet()->setTitle("导出时长超过x小时的车辆汇总");
// 列标
$list = ['A', 'B', 'C','D','E','F','G','H','I'];
// 填充第一行数据
$obj->getActiveSheet()
->setCellValue($list[0] . '1', '序号') //序号加1
->setCellValue($list[1] . '1', '车牌号')
->setCellValue($list[2] . '1', '入场时间')
->setCellValue($list[3] . '1', '出场时间')
->setCellValue($list[4] . '1', '停车时长')
->setCellValue($list[5] . '1', '部门') //去基表里面查
->setCellValue($list[6] . '1', '车位名称')//去基表里面查
->setCellValue($list[7] . '1', '车主姓名')
->setCellValue($list[8] . '1', '异常原因');
// 填充第n(n>=2, n∈N*)行数据
$length = count($data);
for ($i = 0; $i < $length; $i++) {
//$obj->getActiveSheet()->setCellValue($list[0] . ($i + 2), '20190101', \PHPExcel_Cell_DataType::TYPE_STRING);//将其设置为文本格式
$obj->getActiveSheet()->setCellValue($list[0] . ($i + 2), ($i+1), \PHPExcel_Cell_DataType::TYPE_STRING);
$obj->getActiveSheet()->setCellValue($list[1] . ($i + 2), $data[$i]['license_go_in']);
$obj->getActiveSheet()->setCellValue($list[2] . ($i + 2), $data[$i]['time_go_in']);
$obj->getActiveSheet()->setCellValue($list[3] . ($i + 2), $data[$i]['time_go_out']);
$obj->getActiveSheet()->setCellValue($list[4] . ($i + 2), round($data[$i]['parking_length']/3600,2));
//去基表里面查询
$one=Db::table("parking_place_detail")->where(['car_number'=>$data[$i]['license_go_in']])->find();
if(empty($one)){
$partment="暂无";
$car_parking="暂无车位名称";
}else{
$partment=$one['department_name'];
$car_parking=$one['parking_group'];
}
$obj->getActiveSheet()->setCellValue($list[5] . ($i + 2), $partment);
$obj->getActiveSheet()->setCellValue($list[6] . ($i + 2), $car_parking);
$obj->getActiveSheet()->setCellValue($list[7] . ($i + 2), $data[$i]['owner']);
$obj->getActiveSheet()->setCellValue($list[8] . ($i + 2), '停车时长超过'.$parking_length.'小时');
}
// 设置加粗和左对齐
foreach ($list as $col) {
// 设置第一行加粗
$obj->getActiveSheet()->getStyle($col . '1')->getFont()->setBold(true);
// 设置第1-n行,左对齐
for ($i = 1; $i <= $length + 1; $i++) {
$obj->getActiveSheet()->getStyle($col . $i)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
}
}
// 设置列宽
$obj->getActiveSheet()->getColumnDimension('A')->setWidth(10);
$obj->getActiveSheet()->getColumnDimension('B')->setWidth(20);
$obj->getActiveSheet()->getColumnDimension('C')->setWidth(20);
$obj->getActiveSheet()->getColumnDimension('D')->setWidth(20);
$obj->getActiveSheet()->getColumnDimension('E')->setWidth(20);
$obj->getActiveSheet()->getColumnDimension('F')->setWidth(20);
$obj->getActiveSheet()->getColumnDimension('G')->setWidth(20);
$obj->getActiveSheet()->getColumnDimension('H')->setWidth(15);
$obj->getActiveSheet()->getColumnDimension('I')->setWidth(15);
// 导出
ob_clean();
if ($fileType == 'xls') {
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="' . $fileName . '.xls');
header('Cache-Control: max-age=1');
$objWriter = new \PHPExcel_Writer_Excel5($obj);
$objWriter->save('php://output');
exit;
} elseif ($fileType == 'xlsx') {
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="' . $fileName . '.xlsx');
header('Cache-Control: max-age=1');
$objWriter = \PHPExcel_IOFactory::createWriter($obj, 'Excel2007');
$objWriter->save('php://output');
exit;
}
}
//时间区间变成两个时间差
public function time_differ($rank){
//$rank="2020-05-01 - 2020-05-30";
$rank_arr=explode(' ',$rank);
$return_arr['start_time']=$rank_arr[0];
$return_arr['end_time']=$rank_arr[2];
return $return_arr;
}
}