PHPExcel php生成excel表格
2022/9/14 1:19:07
本文主要是介绍PHPExcel php生成excel表格,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
vendor("PHPExcel.PHPExcel"); //加载PHPExcel类库$objPHPExcel = new \PHPExcel(); //实例化PHPExcel类
$objPHPExcel->setActiveSheetIndex(0); //激活当前的sheet表
$objPHPExcel->getDefaultStyle()->getFont()->setSize(15); //设置默认字体大小
$objPHPExcel->getActiveSheet()->getRowDimension()->setRowHeight(15); //设置默认行高
$objPHPExcel->getActiveSheet()->getRowDimension('1')->setRowHeight(30); //设置第一行行高
$objPHPExcel->getActiveSheet()->getStyle( 'B1')->getFont()->setSize(20); //设置B1单元格字体大小
$objPHPExcel->getActiveSheet()->getStyle( 'B1')->getFont()->setBold(true); //字体加粗
//设置水平居中
$objPHPExcel->getDefaultStyle()->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
//设置垂直居中
$objPHPExcel->getDefaultStyle()->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getActiveSheet()->mergeCells('B1:D1'); //合并单元格
$objPHPExcel->getActiveSheet()->unmergeCells('A28:B28'); //拆分单元格
$objPHPExcel->getActiveSheet()->setCellValue('B1', '日生产异常报表'); //设置指定单元格的值
$styleArray = array(
'borders' => array(
'allborders' => array(
'style' => \PHPExcel_Style_Border::BORDER_THIN,//细边框
),
),
);
$objPHPExcel->getActiveSheet()->getStyle( 'B1:C1')->applyFromArray($styleArray); //设置边框
$objPHPExcel->getActiveSheet()->setTitle($na.'报表'); //设置sheet的名称
$objPHPExcel->setActiveSheetIndex(0); //设置sheet的起始位置
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); //通过PHPExcel_IOFactory的写函数将上面数据写出来
$PHPWriter = \PHPExcel_IOFactory::createWriter( $objPHPExcel,"Excel2007");
header('Content-Disposition: attachment;filename="'.$name.'.xlsx"');
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
return json($objWriter->save("php://output")); //表示在$path路径下面生成demo.xlsx文件
if ($rq && $cj){ //$su == 1; 日报表 //$su == 2; 周报表 //$su == 3; 月报表 if ($su==1){ $na = '日'; //查询warn_record表需要导出的数据 $rows = db('warn_record') ->field('tags2, duration_time, start_time, finish_time, bz, jtbh') ->where('start_time','like',$rq.'%') ->where('cj',$cj) ->where('is_warn','=','0') ->select(); //查询warn_day表需要导出的数据 $rows_warn_day = db('warn_day') ->field('run_time, normal_time, number, bz, cl, jtbh') ->where('name',$rq) ->where('cj',$cj) ->select(); }elseif ($su==2){ $na = '周'; $rq2 = request()->param('rq2'); $rq3 = substr($rq2,0,9).(substr($rq2,9,1)+1); //查询warn_record表需要导出的数据 $rows = db('warn_record') ->field('tags2, duration_time, start_time, finish_time, bz, jtbh') ->where('start_time','>',$rq) ->where('start_time','<',$rq3) ->where('cj',$cj) ->where('is_warn','=','0') ->select(); //查询warn_day表需要导出的数据 $rows_warn_day = db('warn_day') ->field('run_time, normal_time, number, bz, cl, jtbh') ->where('name','>=',$rq) ->where('name','<=',$rq2) ->where('cj',$cj) ->select(); }elseif ($su==3){ $na = '月'; $rq = substr($rq,0,7); //查询warn_record表需要导出的数据 $rows = db('warn_record') ->field('tags2, duration_time, start_time, finish_time, bz, jtbh') ->where('start_time','like',$rq.'%') ->where('cj',$cj) ->where('is_warn','=','0') ->select(); //查询warn_day表需要导出的数据 $rows_warn_day = db('warn_day') ->field('run_time, normal_time, number, bz, cl, jtbh') ->where('name','like',$rq.'%') ->where('cj',$cj) ->select(); } //判断是否查到数据 if (count($rows_warn_day)==0){ return $this->error('未查到记录'); } //1.加载PHPExcel类库 vendor("PHPExcel.PHPExcel"); vendor("PHPExcel.PHPExcel.Writer.Excel5"); vendor("PHPExcel.PHPExcel.Writer.Excel2007"); vendor("PHPExcel.PHPExcel.IOFactory"); //2.实例化PHPExcel类 $objPHPExcel = new \PHPExcel(); //3.激活当前的sheet表 $objPHPExcel->setActiveSheetIndex(0); //异常类型汇总 foreach ($rows as $k=>$v){ $rows_tags2[$k] = $v['tags2']; } //halt($rows); if (count($rows)==0){ $num = 0; }else{ $num = count(array_unique($rows_tags2)); //异常类型个数 } $objPHPExcel->getDefaultStyle()->getFont()->setSize(14); //设置默认字体大小 $objPHPExcel->getDefaultStyle()->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); //设置水平居中 $objPHPExcel->getDefaultStyle()->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER); //设置垂直居中 $styleArray = array( 'borders' => array( 'allborders' => array( 'style' => \PHPExcel_Style_Border::BORDER_THIN,//细边框 ), ), ); //边框样式 $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(5); $objPHPExcel->getActiveSheet()->mergeCells('B1:'.chr(65+6+$num*2).'1'); //合并单元格(第一行) $objPHPExcel->getActiveSheet()->getRowDimension('1')->setRowHeight(30); //设置第一行行高 $objPHPExcel->getActiveSheet()->getStyle( 'B1')->getFont()->setSize(16); //设置B1字体大小 if ($su==1){ //表名 $name = $cj.$na.'生产异常报表'.trim(substr($rq,5,2)).'月'.trim(substr($rq,8,2)).'日'; $objPHPExcel->getActiveSheet()->setCellValue('B1', $cj.$na.'生产异常报表'.trim(substr($rq,5,2)).'月'.trim(substr($rq,8,2)).'日'); //设置指定单元格文字 }elseif ($su==2){ $name = $cj.$na.'生产异常报表'.trim(substr($rq,5,2)).'月'.trim(substr($rq,8,2)).'日-'.trim(substr($rq2,5,2)).'月'.trim(substr($rq2,8,2)).'日'; $objPHPExcel->getActiveSheet()->setCellValue('B1', $cj.$na.'生产异常报表'.trim(substr($rq,5,2)).'月'.trim(substr($rq,8,2)).'日-'.trim(substr($rq2,5,2)).'月'.trim(substr($rq2,8,2)).'日'); //设置指定单元格文字 }elseif ($su==3){ $name = $cj.$na.'生产异常报表'.trim((int)substr($rq,5,2)).'月'; $objPHPExcel->getActiveSheet()->setCellValue('B1', $cj.$na.'生产异常报表'.trim((int)substr($rq,5,2)).'月'); //设置指定单元格文字 } $objPHPExcel->getActiveSheet()->mergeCells('B2:B3'); //合并单元格 $objPHPExcel->getActiveSheet()->mergeCells('C2:C3'); $objPHPExcel->getActiveSheet()->mergeCells('D2:D3'); $objPHPExcel->getActiveSheet()->mergeCells('E2:E3'); $objPHPExcel->getActiveSheet()->mergeCells('F2:F3'); $objPHPExcel->getActiveSheet()->setCellValue('B2', '机台'); $objPHPExcel->getActiveSheet()->setCellValue('C2', '班次'); $objPHPExcel->getActiveSheet()->setCellValue('D2', '运行时间'); $objPHPExcel->getActiveSheet()->setCellValue('E2', '产量'); $objPHPExcel->getActiveSheet()->setCellValue('F2', '正常生产时间'); $objPHPExcel->getActiveSheet()->getStyle('B2')->getFont()->setSize(11); $objPHPExcel->getActiveSheet()->getStyle('C2')->getFont()->setSize(11); $objPHPExcel->getActiveSheet()->getStyle('D2')->getFont()->setSize(11); $objPHPExcel->getActiveSheet()->getStyle('E2')->getFont()->setSize(11); $objPHPExcel->getActiveSheet()->getStyle('F2')->getFont()->setSize(11); $objPHPExcel->getActiveSheet()->getStyle( 'B2:B3')->applyFromArray($styleArray); //设置边框 $objPHPExcel->getActiveSheet()->getStyle( 'C2:C3')->applyFromArray($styleArray); $objPHPExcel->getActiveSheet()->getStyle( 'D2:D3')->applyFromArray($styleArray); $objPHPExcel->getActiveSheet()->getStyle( 'E2:E3')->applyFromArray($styleArray); $objPHPExcel->getActiveSheet()->getStyle( 'F2:F3')->applyFromArray($styleArray); if (count($rows)!=0){ //异常类型持续时间汇总 foreach (array_unique($rows_tags2) as $k=>$v){ $arr1[$v] = 0; foreach ($rows as $m=>$n) { if ($n['tags2']==$v){ $arr1[$v] += $this->stringToSec($n['duration_time']); } } } arsort($arr1); //根据持续时间降序排列 $arr_tags2 = array_keys($arr1); foreach ($arr_tags2 as $k=>$v){ $objPHPExcel->getActiveSheet()->mergeCells(chr(65+6+2*$k).'2:'.chr(65+6+2*$k+1).'2'); //合并单元格 $objPHPExcel->getActiveSheet()->setCellValue(chr(65+6+2*$k).'2', $v); $objPHPExcel->getActiveSheet()->getStyle(chr(65+6+2*$k).'2')->getFont()->setSize(11); $objPHPExcel->getActiveSheet()->getStyle( chr(65+6+2*$k).'2:'.chr(65+6+2*$k+1).'2')->applyFromArray($styleArray); $objPHPExcel->getActiveSheet()->setCellValue(chr(65+6+2*$k).'3', '时间汇总'); $objPHPExcel->getActiveSheet()->setCellValue(chr(65+6+2*$k+1).'3', '次数汇总'); $objPHPExcel->getActiveSheet()->getStyle(chr(65+6+2*$k).'3')->getFont()->setSize(11); $objPHPExcel->getActiveSheet()->getStyle(chr(65+6+2*$k+1).'3')->getFont()->setSize(11); $objPHPExcel->getActiveSheet()->getStyle( chr(65+6+2*$k).'3:'.chr(65+6+2*$k).'3')->applyFromArray($styleArray); $objPHPExcel->getActiveSheet()->getStyle( chr(65+6+2*$k+1).'3:'.chr(65+6+2*$k+1).'3')->applyFromArray($styleArray); } } //异常类型机台汇总 foreach ($rows_warn_day as $k=>$v){ $rows_jtbh[$k] = $v['jtbh']; } $rows_jtbh = array_values(array_unique($rows_jtbh)); sort($rows_jtbh); foreach ($rows_jtbh as $k=>$v){ $objPHPExcel->getActiveSheet()->mergeCells('B'.(4+$k*3).':B'.(4+$k*3+2)); $objPHPExcel->getActiveSheet()->setCellValue('B'.(4+$k*3),$v); $objPHPExcel->getActiveSheet()->getStyle('B'.(4+$k*3))->getFont()->setSize(11); $objPHPExcel->getActiveSheet()->getStyle( 'B'.(4+$k*3).':B'.(4+$k*3+2))->applyFromArray($styleArray); $objPHPExcel->getActiveSheet()->setCellValue('C'.(4+$k*3),'A'); $objPHPExcel->getActiveSheet()->setCellValue('C'.(4+$k*3+1),'B'); $objPHPExcel->getActiveSheet()->setCellValue('C'.(4+$k*3+2),'合计'); $objPHPExcel->getActiveSheet()->getStyle('C'.(4+$k*3))->getFont()->setSize(11); $objPHPExcel->getActiveSheet()->getStyle('C'.(4+$k*3+1))->getFont()->setSize(11); $objPHPExcel->getActiveSheet()->getStyle('C'.(4+$k*3+2))->getFont()->setSize(11); $objPHPExcel->getActiveSheet()->getStyle( 'C'.(4+$k*3).':C'.(4+$k*3))->applyFromArray($styleArray); $objPHPExcel->getActiveSheet()->getStyle( 'C'.(4+$k*3+1).':C'.(4+$k*3+1))->applyFromArray($styleArray); $objPHPExcel->getActiveSheet()->getStyle( 'C'.(4+$k*3+2).':C'.(4+$k*3+2))->applyFromArray($styleArray); //汇总统计数据(运行时间、产量、正常生产时间) $arr['run_timeA'] = $arr['clA'] = $arr['normal_timeA'] = 0; $arr['run_timeB'] = $arr['clB'] = $arr['normal_timeB'] = 0; $arr['run_timeC'] = $arr['clC'] = $arr['normal_timeC'] = 0; foreach ($rows_warn_day as $m=>$n){ if ($n['jtbh']==$v && $n['bz']=='A班') { $arr['run_timeA'] += $this->stringToSec($n['run_time']); $arr['clA'] += $n['cl']; $arr['normal_timeA'] += $this->stringToSec($n['normal_time']); } if ($n['jtbh']==$v && $n['bz']=='B班') { $arr['run_timeB'] += $this->stringToSec($n['run_time']); $arr['clB'] += $n['cl']; $arr['normal_timeB'] += $this->stringToSec($n['normal_time']); } } //计算合计 $arr['run_timeC'] = $arr['run_timeA']+$arr['run_timeB']; $arr['clC'] = $arr['clA']+$arr['clB']; $arr['normal_timeC'] = $arr['normal_timeA']+$arr['normal_timeB']; //int转00:00:00 $arr['run_timeA'] = $this->secToString($arr['run_timeA']); $arr['normal_timeA'] = $this->secToString($arr['normal_timeA']); $arr['run_timeB'] = $this->secToString($arr['run_timeB']); $arr['normal_timeB'] = $this->secToString($arr['normal_timeB']); $arr['run_timeC'] = $this->secToString($arr['run_timeC']); $arr['normal_timeC'] = $this->secToString($arr['normal_timeC']); //遍历插入 for($i=0; $i<=3;$i++){ $objPHPExcel->getActiveSheet()->setCellValue('D'.(4+$k*3),$arr['run_timeA']); $objPHPExcel->getActiveSheet()->setCellValue('E'.(4+$k*3),$arr['clA']); $objPHPExcel->getActiveSheet()->setCellValue('F'.(4+$k*3),$arr['normal_timeA']); $objPHPExcel->getActiveSheet()->getStyle('D'.(4+$k*3))->getFont()->setSize(11); $objPHPExcel->getActiveSheet()->getStyle('E'.(4+$k*3))->getFont()->setSize(11); $objPHPExcel->getActiveSheet()->getStyle('F'.(4+$k*3))->getFont()->setSize(11); $objPHPExcel->getActiveSheet()->getStyle( 'D'.(4+$k*3).':D'.(4+$k*3))->applyFromArray($styleArray); $objPHPExcel->getActiveSheet()->getStyle( 'E'.(4+$k*3).':E'.(4+$k*3))->applyFromArray($styleArray); $objPHPExcel->getActiveSheet()->getStyle( 'F'.(4+$k*3).':F'.(4+$k*3))->applyFromArray($styleArray); $objPHPExcel->getActiveSheet()->setCellValue('D'.(4+$k*3+1),$arr['run_timeB']); $objPHPExcel->getActiveSheet()->setCellValue('E'.(4+$k*3+1),$arr['clB']); $objPHPExcel->getActiveSheet()->setCellValue('F'.(4+$k*3+1),$arr['normal_timeB']); $objPHPExcel->getActiveSheet()->getStyle('D'.(4+$k*3+1))->getFont()->setSize(11); $objPHPExcel->getActiveSheet()->getStyle('E'.(4+$k*3+1))->getFont()->setSize(11); $objPHPExcel->getActiveSheet()->getStyle('F'.(4+$k*3+1))->getFont()->setSize(11); $objPHPExcel->getActiveSheet()->getStyle( 'D'.(4+$k*3+1).':D'.(4+$k*3+1))->applyFromArray($styleArray); $objPHPExcel->getActiveSheet()->getStyle( 'E'.(4+$k*3+1).':E'.(4+$k*3+1))->applyFromArray($styleArray); $objPHPExcel->getActiveSheet()->getStyle( 'F'.(4+$k*3+1).':F'.(4+$k*3+1))->applyFromArray($styleArray); $objPHPExcel->getActiveSheet()->setCellValue('D'.(4+$k*3+2),$arr['run_timeC']); $objPHPExcel->getActiveSheet()->setCellValue('E'.(4+$k*3+2),$arr['clC']); $objPHPExcel->getActiveSheet()->setCellValue('F'.(4+$k*3+2),$arr['normal_timeC']); $objPHPExcel->getActiveSheet()->getStyle('D'.(4+$k*3+2))->getFont()->setSize(11); $objPHPExcel->getActiveSheet()->getStyle('E'.(4+$k*3+2))->getFont()->setSize(11); $objPHPExcel->getActiveSheet()->getStyle('F'.(4+$k*3+2))->getFont()->setSize(11); $objPHPExcel->getActiveSheet()->getStyle( 'D'.(4+$k*3+2).':D'.(4+$k*3+2))->applyFromArray($styleArray); $objPHPExcel->getActiveSheet()->getStyle( 'E'.(4+$k*3+2).':E'.(4+$k*3+2))->applyFromArray($styleArray); $objPHPExcel->getActiveSheet()->getStyle( 'F'.(4+$k*3+2).':F'.(4+$k*3+2))->applyFromArray($styleArray); } if (count($rows)!=0){ //异常 foreach ($arr_tags2 as $m=>$n){ //A $rowA = []; foreach ($rows as $row){ if ($row['jtbh']==$v && $row['tags2']==$n && $row['bz']=='A组'){ array_push($rowA, $row); } } $row_A['time'] = 0; foreach ($rowA as $item=>$value){ $row_A['time'] += $this->stringToSec($value['duration_time']); } $row_A['time'] = $this->secToString($row_A['time']); $row_A['num'] = count($rowA); if ($row_A['num']!=0){ $objPHPExcel->getActiveSheet()->setCellValue(chr(65+6+2*$m).(4+$k*3),$row_A['time']); $objPHPExcel->getActiveSheet()->setCellValue(chr(65+6+2*$m+1).(4+$k*3),$row_A['num']); $objPHPExcel->getActiveSheet()->getStyle(chr(65+6+2*$m).(4+$k*3))->getFont()->setSize(11); $objPHPExcel->getActiveSheet()->getStyle(chr(65+6+2*$m+1).(4+$k*3))->getFont()->setSize(11); $objPHPExcel->getActiveSheet()->getStyle( chr(65+6+2*$m).(4+$k*3).':'.chr(65+6+2*$m).(4+$k*3))->applyFromArray($styleArray); $objPHPExcel->getActiveSheet()->getStyle( chr(65+6+2*$m+1).(4+$k*3).':'.chr(65+6+2*$m+1).(4+$k*3))->applyFromArray($styleArray); }else{ $objPHPExcel->getActiveSheet()->getStyle(chr(65+6+2*$m).(4+$k*3))->getFont()->setSize(11); $objPHPExcel->getActiveSheet()->getStyle(chr(65+6+2*$m+1).(4+$k*3))->getFont()->setSize(11); $objPHPExcel->getActiveSheet()->getStyle( chr(65+6+2*$m).(4+$k*3).':'.chr(65+6+2*$m).(4+$k*3))->applyFromArray($styleArray); $objPHPExcel->getActiveSheet()->getStyle( chr(65+6+2*$m+1).(4+$k*3).':'.chr(65+6+2*$m+1).(4+$k*3))->applyFromArray($styleArray); } //B $rowB = []; foreach ($rows as $row){ if ($row['jtbh']==$v && $row['tags2']==$n && $row['bz']=='B组'){ array_push($rowB, $row); } } $row_B['time'] = 0; foreach ($rowB as $item=>$value){ $row_B['time'] += $this->stringToSec($value['duration_time']); } $row_B['time'] = $this->secToString($row_B['time']); $row_B['num'] = count($rowB); if ($row_B['num']!=0){ $objPHPExcel->getActiveSheet()->setCellValue(chr(65+6+2*$m).(4+$k*3+1),$row_B['time']); $objPHPExcel->getActiveSheet()->setCellValue(chr(65+6+2*$m+1).(4+$k*3+1),$row_B['num']); $objPHPExcel->getActiveSheet()->getStyle(chr(65+6+2*$m).(4+$k*3+1))->getFont()->setSize(11); $objPHPExcel->getActiveSheet()->getStyle(chr(65+6+2*$m+1).(4+$k*3+1))->getFont()->setSize(11); $objPHPExcel->getActiveSheet()->getStyle( chr(65+6+2*$m).(4+$k*3+1).':'.chr(65+6+2*$m).(4+$k*3+1))->applyFromArray($styleArray); $objPHPExcel->getActiveSheet()->getStyle( chr(65+6+2*$m+1).(4+$k*3+1).':'.chr(65+6+2*$m+1).(4+$k*3+1))->applyFromArray($styleArray); }else{ $objPHPExcel->getActiveSheet()->getStyle(chr(65+6+2*$m).(4+$k*3+1))->getFont()->setSize(11); $objPHPExcel->getActiveSheet()->getStyle(chr(65+6+2*$m+1).(4+$k*3+1))->getFont()->setSize(11); $objPHPExcel->getActiveSheet()->getStyle( chr(65+6+2*$m).(4+$k*3+1).':'.chr(65+6+2*$m).(4+$k*3+1))->applyFromArray($styleArray); $objPHPExcel->getActiveSheet()->getStyle( chr(65+6+2*$m+1).(4+$k*3+1).':'.chr(65+6+2*$m+1).(4+$k*3+1))->applyFromArray($styleArray); } //C合计 $row_C['time'] = $this->secToString($this->stringToSec($row_A['time'])+$this->stringToSec($row_B['time'])); $row_C['num'] = $row_A['num']+$row_B['num']; if ($row_C['num']!=0){ $objPHPExcel->getActiveSheet()->setCellValue(chr(65+6+2*$m).(4+$k*3+2),$row_C['time']); $objPHPExcel->getActiveSheet()->setCellValue(chr(65+6+2*$m+1).(4+$k*3+2),$row_C['num']); $objPHPExcel->getActiveSheet()->getStyle(chr(65+6+2*$m).(4+$k*3+2))->getFont()->setSize(11); $objPHPExcel->getActiveSheet()->getStyle(chr(65+6+2*$m+1).(4+$k*3+2))->getFont()->setSize(11); $objPHPExcel->getActiveSheet()->getStyle( chr(65+6+2*$m).(4+$k*3+2).':'.chr(65+6+2*$m).(4+$k*3+2))->applyFromArray($styleArray); $objPHPExcel->getActiveSheet()->getStyle( chr(65+6+2*$m+1).(4+$k*3+2).':'.chr(65+6+2*$m+1).(4+$k*3+2))->applyFromArray($styleArray); }else{ $objPHPExcel->getActiveSheet()->getStyle(chr(65+6+2*$m).(4+$k*3+2))->getFont()->setSize(11); $objPHPExcel->getActiveSheet()->getStyle(chr(65+6+2*$m+1).(4+$k*3+2))->getFont()->setSize(11); $objPHPExcel->getActiveSheet()->getStyle( chr(65+6+2*$m).(4+$k*3+2).':'.chr(65+6+2*$m).(4+$k*3+2))->applyFromArray($styleArray); $objPHPExcel->getActiveSheet()->getStyle( chr(65+6+2*$m+1).(4+$k*3+2).':'.chr(65+6+2*$m+1).(4+$k*3+2))->applyFromArray($styleArray); } } }else{ $objPHPExcel->getActiveSheet()->mergeCells('G2:G3'); $objPHPExcel->getActiveSheet()->setCellValue('G2','无异常'); $objPHPExcel->getActiveSheet()->getStyle('G2')->getFont()->setSize(11); } } //3+3*count($rows_jtbh)+2; //超3小时明细 /*----------------------------------*/ $num = 3; $objPHPExcel->getActiveSheet()->mergeCells('B'.(3+3*count($rows_jtbh)+2).':F'.(3+3*count($rows_jtbh)+2)); //合并单元格(第一行) $objPHPExcel->getActiveSheet()->getRowDimension(3+3*count($rows_jtbh)+2)->setRowHeight(30); //设置第一行行高 $objPHPExcel->getActiveSheet()->getStyle( 'B'.(3+3*count($rows_jtbh)+2))->getFont()->setSize(16); //设置B1字体大小 $objPHPExcel->getActiveSheet()->setCellValue('B'.(3+3*count($rows_jtbh)+2), '每'.$na.'生产异常超'.$num.'小时明细(单次)'); //设置指定单元格文字 $objPHPExcel->getActiveSheet()->setCellValue('B'.(3+3*count($rows_jtbh)+3), '机台'); $objPHPExcel->getActiveSheet()->setCellValue('C'.(3+3*count($rows_jtbh)+3), '班次'); $objPHPExcel->getActiveSheet()->setCellValue('D'.(3+3*count($rows_jtbh)+3), '异常类型'); $objPHPExcel->getActiveSheet()->setCellValue('E'.(3+3*count($rows_jtbh)+3), '异常时间汇总'); $objPHPExcel->getActiveSheet()->setCellValue('F'.(3+3*count($rows_jtbh)+3), '异常次数'); $objPHPExcel->getActiveSheet()->getStyle('B'.(3+3*count($rows_jtbh)+3))->getFont()->setSize(11); $objPHPExcel->getActiveSheet()->getStyle('C'.(3+3*count($rows_jtbh)+3))->getFont()->setSize(11); $objPHPExcel->getActiveSheet()->getStyle('D'.(3+3*count($rows_jtbh)+3))->getFont()->setSize(11); $objPHPExcel->getActiveSheet()->getStyle('E'.(3+3*count($rows_jtbh)+3))->getFont()->setSize(11); $objPHPExcel->getActiveSheet()->getStyle('F'.(3+3*count($rows_jtbh)+3))->getFont()->setSize(11); $objPHPExcel->getActiveSheet()->getStyle( 'B'.(3+3*count($rows_jtbh)+3).':B'.(3+3*count($rows_jtbh)+3))->applyFromArray($styleArray); $objPHPExcel->getActiveSheet()->getStyle( 'C'.(3+3*count($rows_jtbh)+3).':C'.(3+3*count($rows_jtbh)+3))->applyFromArray($styleArray); $objPHPExcel->getActiveSheet()->getStyle( 'D'.(3+3*count($rows_jtbh)+3).':D'.(3+3*count($rows_jtbh)+3))->applyFromArray($styleArray); $objPHPExcel->getActiveSheet()->getStyle( 'E'.(3+3*count($rows_jtbh)+3).':E'.(3+3*count($rows_jtbh)+3))->applyFromArray($styleArray); $objPHPExcel->getActiveSheet()->getStyle( 'F'.(3+3*count($rows_jtbh)+3).':F'.(3+3*count($rows_jtbh)+3))->applyFromArray($styleArray); foreach($rows_jtbh as $k=>$v){ //left static $left = 0; if ($num < 10) $num = '0'.$num; $rows2 = []; foreach ($rows as $row) { if ($row['jtbh']==$v && $row['duration_time']>$num.':00:00'){ array_push($rows2,$row); } } $rows2_tags2 = []; foreach ($rows2 as $i=>$j){ $rows2_tags2[$i] = $j['tags2']; } $number = count(array_unique($rows2_tags2)); if ($number!=0){ $objPHPExcel->getActiveSheet()->mergeCells('B'.(3+3*count($rows_jtbh)+4+$left).':B'.(3+3*count($rows_jtbh)+4+$left+$number-1)); $objPHPExcel->getActiveSheet()->setCellValue('B'.(3+3*count($rows_jtbh)+4+$left), $v); $objPHPExcel->getActiveSheet()->getStyle('B'.(3+3*count($rows_jtbh)+4+$left))->getFont()->setSize(11); $objPHPExcel->getActiveSheet()->getStyle( 'B'.(3+3*count($rows_jtbh)+4+$left).':B'.(3+3*count($rows_jtbh)+4+$left+$number-1))->applyFromArray($styleArray); $left += $number; //right static $flag = 0; for($o=0;$o<2;$o++){ $o==0?$bz='A':$bz='B'; //A/B组 $rows2 = []; foreach ($rows as $row) { if ($row['jtbh']==$v && $row['duration_time']>$num.':00:00' && $row['bz']==$bz.'组'){ array_push($rows2,$row); } } $rows2_tags2 = []; foreach ($rows2 as $i=>$j){ $rows2_tags2[$i] = $j['tags2']; } $r = array_count_values($rows2_tags2); //异常类型=>停机次数 $arr2 = []; foreach (array_unique($rows2_tags2) as $j){ $arr2[$j] = 0; foreach ($rows2 as $m=>$n) { if ($n['tags2']==$j){ $arr2[$j] += $this->stringToSec($n['duration_time']); } } } arsort($arr2); //根据持续时间降序排列 $arr2_tags2 = array_keys($arr2); foreach($arr2_tags2 as $i=>$j){ $flag++; $objPHPExcel->getActiveSheet()->setCellValue('C'.(3+3*count($rows_jtbh)+3+$flag), $bz); $objPHPExcel->getActiveSheet()->setCellValue('D'.(3+3*count($rows_jtbh)+3+$flag), $j); $objPHPExcel->getActiveSheet()->setCellValue('E'.(3+3*count($rows_jtbh)+3+$flag), $this->secToString($arr2[$j])); $objPHPExcel->getActiveSheet()->setCellValue('F'.(3+3*count($rows_jtbh)+3+$flag), $r[$j]); $objPHPExcel->getActiveSheet()->getStyle('C'.(3+3*count($rows_jtbh)+3+$flag))->getFont()->setSize(11); $objPHPExcel->getActiveSheet()->getStyle('D'.(3+3*count($rows_jtbh)+3+$flag))->getFont()->setSize(11); $objPHPExcel->getActiveSheet()->getStyle('E'.(3+3*count($rows_jtbh)+3+$flag))->getFont()->setSize(11); $objPHPExcel->getActiveSheet()->getStyle('F'.(3+3*count($rows_jtbh)+3+$flag))->getFont()->setSize(11); $objPHPExcel->getActiveSheet()->getStyle( 'C'.(3+3*count($rows_jtbh)+3+$flag).':C'.(3+3*count($rows_jtbh)+3+$flag))->applyFromArray($styleArray); $objPHPExcel->getActiveSheet()->getStyle( 'D'.(3+3*count($rows_jtbh)+3+$flag).':D'.(3+3*count($rows_jtbh)+3+$flag))->applyFromArray($styleArray); $objPHPExcel->getActiveSheet()->getStyle( 'E'.(3+3*count($rows_jtbh)+3+$flag).':E'.(3+3*count($rows_jtbh)+3+$flag))->applyFromArray($styleArray); $objPHPExcel->getActiveSheet()->getStyle( 'F'.(3+3*count($rows_jtbh)+3+$flag).':F'.(3+3*count($rows_jtbh)+3+$flag))->applyFromArray($styleArray); } } } } foreach ($rows as $row) { if ($row['jtbh']==$v && $row['duration_time']>$num.':00:00'){ array_push($rows2,$row); } } if (count($rows2)==0){ $objPHPExcel->getActiveSheet()->mergeCells('B'.(3+3*count($rows_jtbh)+4).':F'.(3+3*count($rows_jtbh)+4)); //合并单元格(第一行) $objPHPExcel->getActiveSheet()->setCellValue('B'.(3+3*count($rows_jtbh)+4), '空'); //设置指定单元格文字 $objPHPExcel->getActiveSheet()->getStyle('B'.(3+3*count($rows_jtbh)+4))->getFont()->setSize(11); $objPHPExcel->getActiveSheet()->getStyle( 'B'.(3+3*count($rows_jtbh)+4).':F'.(3+3*count($rows_jtbh)+4))->applyFromArray($styleArray); } $objPHPExcel->getActiveSheet()->setTitle($na.'报表'); //设置sheet的名称 $objPHPExcel->setActiveSheetIndex(0); //设置sheet的起始位置 $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); //通过PHPExcel_IOFactory的写函数将上面数据写出来 $PHPWriter = \PHPExcel_IOFactory::createWriter( $objPHPExcel,"Excel2007"); header('Content-Disposition: attachment;filename="'.$name.'.xlsx"'); header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); return json($objWriter->save("php://output")); //表示在$path路径下面生成demo.xlsx文件 }else{ return $this->error('请重试'); }
这篇关于PHPExcel php生成excel表格的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-19php8的协程和hyperf的协程有什么区别?-icode9专业技术文章分享
- 2024-12-19php8 的fiber是什么?-icode9专业技术文章分享
- 2024-12-05怎么在php8,1 里面开启 debug?-icode9专业技术文章分享
- 2024-12-05怎么在php8,1 里面开启 debug?-icode9专业技术文章分享
- 2024-11-29使用PHP 将ETH账户的资产汇集到一个账户
- 2024-11-23怎么实现安卓+php 热更新方案?-icode9专业技术文章分享
- 2024-11-22PHP 中怎么实现判断多个值是否为空、null 或者为 false?-icode9专业技术文章分享
- 2024-11-11开源 PHP 商城项目 CRMEB 二次开发和部署教程
- 2024-11-09怎么使用php在kaufland平台刊登商品?-icode9专业技术文章分享
- 2024-11-05PHP的抽象类和接口是什么,有什么区别-icode9专业技术文章分享