先上代码之后有空再整理
public function showExcel(){
$post = $this->request->post();
$data = $post['paydatainfo2'];
$data = json_decode($data,1);
$gid=array();
foreach ($data as $it){
if (!empty($it['GID'])){
if (empty($gid)){
array_push($gid,$it['GID']);
}else{
if (in_array($it['GID'],$gid)){
continue;
}else{
array_push($gid,$it['GID']);
}
}
}
}
$exceldata=array();
foreach ($gid as $itd){
$temp=array();
foreach ($data as $it){
if ($it['GID']==$itd){
array_push($temp,$it);
}
}
$exceldata[$itd]=$temp;
}
$data = array();
foreach ($gid as $itd){
$datatime=array();
$xsldata=array();
foreach ($exceldata[$itd] as $item){
if (!empty($item['created'])){
if(empty($datatime)){
array_push($datatime,date('Y-m-d',$item['created']));
}else{
if (in_array(date('Y-m-d',$item['created']),$datatime)){
continue;
}else{
array_push($datatime,date('Y-m-d',$item['created']));
}
}
}
}
$tol_uid=0;
$tol_sex=0;
$tol_usex=0;
$tol_ustask=0;
foreach ($datatime as $time){
foreach ($exceldata[$itd] as $item){
if ($time == date('Y-m-d',$item['created'])&&!empty($item['uid'])){
$tol_uid+=1;
}
if ($time == date('Y-m-d',$item['created'])&&$item['sex']==1){
$tol_sex+=1;
}
if ($time == date('Y-m-d',$item['created'])&&$item['sex']==1&&!empty($item['name'])){
$tol_usex+=1;
}
if ($time == date('Y-m-d',$item['created'])&&$item['sex']==1&&!empty($item['name'])&&$item['taskid']>1){
$tol_ustask+=1;
}
}
array_push($xsldata,[$time,$tol_uid,$tol_sex,$tol_usex,$tol_ustask,round($tol_sex/$tol_uid*100).'%',round($tol_usex/$tol_uid*100).'%',round($tol_ustask/$tol_uid*100).'%']);
}
$data[$itd]=$xsldata;
}
Vendor('PHPExcel.PHPExcel');
Vendor('PHPExcel.PHPExcel.Worksheet.Drawing');
Vendor('PHPExcel.PHPExcel.Writer.Excel2007');
$objExcel = new \PHPExcel();
$objWriter = \PHPExcel_IOFactory::createWriter($objExcel, 'Excel2007');
$objActSheet = $objExcel->getActiveSheet();
$fileName = $post['fileName2'];
$arrHeader = explode(',',$post['arrHeader2']);
$length = count($arrHeader);
$letter = explode(',',"A,B,C,D,E,F,G,H,I,J,K");
for ($i=0;$i<$length;$i++){
$objActSheet->setCellValue("$letter[$i]1","$arrHeader[$i]");
}
$k=2;
$j=2;
foreach ($gid as $ke=>$itd){
$num = count($data[$itd]);
$k1=$num+$k-1;
$objActSheet->setCellValue($letter[0].$k,$itd);
$objActSheet->setCellValue($letter[1].$k,$itd);
$objActSheet->mergeCells($letter[0].$k.':'.$letter[0].$k1);
$objActSheet->mergeCells($letter[1].$k.':'.$letter[1].$k1);
$k=$k1+1;
for ($i=0;$i<$num;$i++){
for ($x=0;$x<count($data[$itd][$i]);$x++){
$objActSheet->setCellValue($letter[$x+2].$j,$data[$itd][$i][$x]);
}
$j++;
}
}
$width = array(10,10,10,10,10);
$objActSheet->getColumnDimension('A')->setWidth($width[3]);
$objActSheet->getColumnDimension('B')->setWidth($width[3]);
$objActSheet->getColumnDimension('C')->setWidth($width[4]);
$objActSheet->getColumnDimension('D')->setWidth($width[3]);
$objActSheet->getColumnDimension('E')->setWidth($width[3]);
$objActSheet->getColumnDimension('F')->setWidth($width[3]);
$objActSheet->getColumnDimension('G')->setWidth($width[3]);
$outfile = Date('YmdHis',time())."$fileName.xlsx";
ob_end_clean();
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header('Content-Disposition:inline;filename="'.$outfile.'"');
header("Content-Transfer-Encoding: binary");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Pragma: no-cache");
$objWriter->save('php://output');
}