首頁 後端開發 php教程 phpexcel 生成报表

phpexcel 生成报表

Jun 13, 2016 am 10:39 AM
gt

phpexcel 生成表格

登入後複製
	/* 	 * 导出excel表格 	 * 根据统计标题信息、日期信息和excel表格标示信息 	 * 先循环统计标题信息在循环每条统计下面按日期的具体信息 	 * 进行单元格设置 合并 添加样式 	 */ 	function _export($tipMsg = null, $date = null, $excelTitle = null){ 		$this->autoRender = false;		App::import('Vendor', 'phpexcel', array('file' => 'PHPExcel.php'));		App::import('Vendor', 'phpexcelwriter', array('file' => 'PHPExcel'.DS.'Writer'.DS.'Excel2007.php')); // loads PHPExcel/Writer/Excel2007.php		$objPHPExcel = new PHPExcel();		$excelName  = 'speiyou_'.date('y-m-d H:i:s').'.xls';//文件名字		// 设置属性		$objPHPExcel->getProperties()->setCreator("Maarten Balliauw")									 ->setLastModifiedBy("Maarten Balliauw")									 ->setTitle("Office 2007 XLSX Test Document")									 ->setSubject("Office 2007 XLSX Test Document")									 ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")									 ->setKeywords("office 2007 openxml php")									 ->setCategory("Test result file");		//样式声明		$objActSheet = $objPHPExcel->getActiveSheet();		//设置样式字体		$sharedStyle1 = new PHPExcel_Style();		$sharedStyle1->applyFromArray(			array('fill' 	=> array('type' => PHPExcel_Style_Fill::FILL_SOLID,'color' => array('argb' => 'FFCCFFCC')),				  'borders' => array('bottom'=> array('style' => PHPExcel_Style_Border::BORDER_THIN),									 'right'=> array('style' => PHPExcel_Style_Border::BORDER_THIN),									 'top'	=> array('style' => PHPExcel_Style_Border::BORDER_THIN),									 'left'	=> array('style' => PHPExcel_Style_Border::BORDER_THIN)),				  'font' => array('bold' => true,'color'=>array('argb' => '00000000')),													 ));				// 添加头部数据		$objPHPExcel->setActiveSheetIndex(0)		            ->setCellValue('A1', '模块分类')		            ->setCellValue('B1', '点击代码')		            ->setCellValue('C1', '代码名称');		 foreach ($date as $tdk => $tdv) {		 	$objPHPExcel->setActiveSheetIndex(0)		 				->setCellValue($excelTitle[$tdk].'1', $date[$tdk]);		 } 		/*添加主要内容 		 * 分类处理 tou(头部导航) banji(班级分类) fonepage(首页一屏) ftwopage(首页二屏) fthreepage(首页三屏) 		 * bottom(底部) teacher(名师) ad(广告) 		 */		 $num = 2;//循环开始标记位            		 $datenum = count($date) - 1;		 foreach($tipMsg as $k => $v) {		 	if ($k == 'tou') {		 		$tounum = $num + 1;				$newnum = $num-1;		 		$objPHPExcel->setActiveSheetIndex(0)		 			->setCellValue('A2','头部导航');		 		//合并单元格		 		$objActSheet->mergeCells('A'.$num.':C'.$num);			 		$objActSheet->mergeCells('A2'.':A'.$newnum);		 		$objPHPExcel->getActiveSheet()->setSharedStyle($sharedStyle1, "A2:A".$newnum);			 		$objPHPExcel->setActiveSheetIndex(0)		 			->setCellValue('A'.$num, '本类汇总');		 		$objPHPExcel->getActiveSheet()->setSharedStyle($sharedStyle1, "A".$num.":".$excelTitle[count($date) - 1].$num);			 		$objActSheet->getStyle('A'.$num)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); 				//求和				foreach($date as $datek => $datev) {				$objPHPExcel->setActiveSheetIndex(0)						->setCellValue($excelTitle[$datek].$num,'=SUM('.$excelTitle[$datek].'2:'.$excelTitle[$datek].$newnum.')');			}		 				 	} elseif ($k == 'banji') {		 		$banjinum = $num + 1;				$newnum = $num-1;		 		$objPHPExcel->setActiveSheetIndex(0)		 			->setCellValue('A'.$tounum,'班级分类');		 		//合并单元格		 		$objActSheet->mergeCells('A'.$num.':C'.$num);		 		$objPHPExcel->getActiveSheet()->setSharedStyle($sharedStyle1, "A".$tounum.":A".$newnum);		 		$objPHPExcel->setActiveSheetIndex(0)		 			->setCellValue('A'.$num, '本类汇总');		 		$objPHPExcel->getActiveSheet()->setSharedStyle($sharedStyle1, "A".$num.":".$excelTitle[count($date) - 1].$num);		 		$objActSheet->getStyle('A'.$num)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);			 			//求和				foreach($date as $datek => $datev) {				$objPHPExcel->setActiveSheetIndex(0)						->setCellValue($excelTitle[$datek].$num,'=SUM('.$excelTitle[$datek].$tounum.':'.$excelTitle[$datek].$newnum.')');				}		 				 	} elseif ($k == 'fonepage') {		 		$fonepagenum = $num + 1;				$newnum = $num-1;		 		$objPHPExcel->setActiveSheetIndex(0)		 			->setCellValue('A'.$banjinum,'首页一屏');		 		//合并单元格		 		$objActSheet->mergeCells('A'.$num.':C'.$num);		 		$objPHPExcel->getActiveSheet()->setSharedStyle($sharedStyle1, "A".$banjinum.":A".$newnum);		 					 		$objPHPExcel->setActiveSheetIndex(0)		 			->setCellValue('A'.$num, '本类汇总');		 		$objPHPExcel->getActiveSheet()->setSharedStyle($sharedStyle1, "A".$num.":".$excelTitle[count($date) - 1].$num);		 		$objActSheet->getStyle('A'.$num)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);		 			//求和				foreach($date as $datek => $datev) {				$objPHPExcel->setActiveSheetIndex(0)						->setCellValue($excelTitle[$datek].$num,'=SUM('.$excelTitle[$datek].$banjinum.':'.$excelTitle[$datek].$newnum.')');				}		 				 	} elseif ($k == 'ftwopage') {		 		$ftwopagenum = $num + 1;				$newnum = $num-1;		 		$objPHPExcel->setActiveSheetIndex(0)		 			->setCellValue('A'.$fonepagenum,'首页二屏');		 		//合并单元格		 		$objActSheet->mergeCells('A'.$num.':C'.$num);		 		$objPHPExcel->getActiveSheet()->setSharedStyle($sharedStyle1, "A".$fonepagenum.":A".$newnum);			 					 		$objPHPExcel->setActiveSheetIndex(0)		 			->setCellValue('A'.$num, '本类汇总');		 		$objPHPExcel->getActiveSheet()->setSharedStyle($sharedStyle1, "A".$num.":".$excelTitle[count($date) - 1].$num);		 		$objActSheet->getStyle('A'.$num)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);		 			//求和				foreach($date as $datek => $datev) {				$objPHPExcel->setActiveSheetIndex(0)						->setCellValue($excelTitle[$datek].$num,'=SUM('.$excelTitle[$datek].$fonepagenum.':'.$excelTitle[$datek].$newnum.')');				}		 				 	} elseif ($k == 'fthreepage') {		 		$fthreepage = $num + 1;				$newnum = $num-1;		 		$objPHPExcel->setActiveSheetIndex(0)		 			->setCellValue('A'.$ftwopagenum,'首页三屏');		 		//合并单元格		 		$objActSheet->mergeCells('A'.$num.':C'.$num);		 		$objPHPExcel->getActiveSheet()->setSharedStyle($sharedStyle1, "A".$ftwopagenum.":A".$newnum);			 					 		$objPHPExcel->setActiveSheetIndex(0)		 			->setCellValue('A'.$num, '本类汇总');		 		$objPHPExcel->getActiveSheet()->setSharedStyle($sharedStyle1, "A".$num.":".$excelTitle[count($date) - 1].$num);		 		$objActSheet->getStyle('A'.$num)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);		 			//求和				foreach($date as $datek => $datev) {				$objPHPExcel->setActiveSheetIndex(0)						->setCellValue($excelTitle[$datek].$num,'=SUM('.$excelTitle[$datek].$ftwopagenum.':'.$excelTitle[$datek].$newnum.')');				}		 				 	} elseif ($k == 'bottom') {		 		$bottomnum = $num + 1;				$newnum = $num-1;		 		$objPHPExcel->setActiveSheetIndex(0)		 			->setCellValue('A'.$fthreepage,'底部');		 		//合并单元格		 		$objActSheet->mergeCells('A'.$num.':C'.$num);		 		$objPHPExcel->getActiveSheet()->setSharedStyle($sharedStyle1, "A".$fthreepage.":A".$newnum);			 					 		$objPHPExcel->setActiveSheetIndex(0)		 			->setCellValue('A'.$num, '本类汇总');		 		$objPHPExcel->getActiveSheet()->setSharedStyle($sharedStyle1, "A".$num.":".$excelTitle[count($date) - 1].$num);		 		$objActSheet->getStyle('A'.$num)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);			 			//求和				foreach($date as $datek => $datev) {				$objPHPExcel->setActiveSheetIndex(0)						->setCellValue($excelTitle[$datek].$num,'=SUM('.$excelTitle[$datek].$fthreepage.':'.$excelTitle[$datek].$newnum.')');				}		 				 	} elseif ($k == 'teacher') {		 		$teachernum = $num + 1;				$newnum = $num-1;		 		$objPHPExcel->setActiveSheetIndex(0)		 			->setCellValue('A'.$bottomnum,'名师频道');		 		//合并单元格		 		$objActSheet->mergeCells('A'.$num.':C'.$num);		 		$objPHPExcel->getActiveSheet()->setSharedStyle($sharedStyle1, "A".$bottomnum.":A".$newnum);			 					 		$objPHPExcel->setActiveSheetIndex(0)		 			->setCellValue('A'.$num, '本类汇总');		 		$objPHPExcel->getActiveSheet()->setSharedStyle($sharedStyle1, "A".$num.":".$excelTitle[count($date) - 1].$num);		 		$objActSheet->getStyle('A'.$num)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);			 			//求和				foreach($date as $datek => $datev) {				$objPHPExcel->setActiveSheetIndex(0)						->setCellValue($excelTitle[$datek].$num,'=SUM('.$excelTitle[$datek].$bottomnum.':'.$excelTitle[$datek].$newnum.')');				}		 				 	} elseif ($k == 'ad') {		 		$adnum = $num + 1;				$newnum = $num-1;		 		$objPHPExcel->setActiveSheetIndex(0)		 			->setCellValue('A'.$teachernum,'通栏广告');		 		//合并单元格		 		$objActSheet->mergeCells('A'.$num.':C'.$num);		 		$objPHPExcel->getActiveSheet()->setSharedStyle($sharedStyle1, "A".$teachernum.":A".$newnum);			 					 		$objPHPExcel->setActiveSheetIndex(0)		 			->setCellValue('A'.$num, '本类汇总');		 		$objPHPExcel->getActiveSheet()->setSharedStyle($sharedStyle1, "A".$num.":".$excelTitle[count($date) - 1].$num);		 		$objActSheet->getStyle('A'.$num)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);			 			//求和				foreach($date as $datek => $datev) {				$objPHPExcel->setActiveSheetIndex(0)						->setCellValue($excelTitle[$datek].$num,'=SUM('.$excelTitle[$datek].$teachernum.':'.$excelTitle[$datek].$newnum.')');				}		 				 	} else { 			 	$objPHPExcel->setActiveSheetIndex(0) 				->setCellValue('A'.$num, '') 				->setCellValue('B'.$num, $v['codetip']) 				->setCellValue('C'.$num, $v['codename']); 				foreach($date as $tdk => $tdv) { 					$objPHPExcel->setActiveSheetIndex(0) 								->setCellValue($excelTitle[$tdk].$num, $v['nums'][$tdk]); 				}		 	}		 	++$num;						 }		//添加样式		$objPHPExcel->getActiveSheet()->setSharedStyle($sharedStyle1, "A1:".$excelTitle[count($date) - 1]."1");//		$objPHPExcel->getActiveSheet()->setSharedStyle($sharedStyle1, "A1:A".$num);				//冻结列		$objPHPExcel->getActiveSheet()->freezePane('A1');		$objPHPExcel->getActiveSheet()->freezePane('B1');		$objPHPExcel->getActiveSheet()->freezePane('C1');		$objPHPExcel->getActiveSheet()->freezePane('D2');		//设置居中		$objActSheet->getStyle('A2')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);		$objActSheet->getStyle('A'.$num)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);		//设置列宽		$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(20);		//设置底部总数统计信息		$ttotal		 = $tounum - 1;		$banjitotal  = $banjinum - 1;		$fototal	 = $fonepagenum - 1;		$fttotal	 = $ftwopagenum - 1;		$frtotal	 = $fthreepage - 1;		$btotal 	 = $bottomnum - 1;		$chtotal	 = $teachernum - 1;		$adtotal	 = $adnum - 1;		$objPHPExcel->setActiveSheetIndex(0)					->setCellValue('A'.$num, '总计')					->setCellValue('B'.$num, '')					->setCellValue('C'.$num, '日统计');					foreach ($date as $totalk => $totalv) {	 					$objPHPExcel->setActiveSheetIndex(0)	 								->setCellValue($excelTitle[$totalk].$num, '=SUM('.$excelTitle[$totalk].$ttotal.','.$excelTitle[$totalk].$banjitotal.','.$excelTitle[$totalk].$fototal.','.$excelTitle[$totalk].$fttotal.','.$excelTitle[$totalk].$frtotal.','.$excelTitle[$totalk].$btotal.','.$excelTitle[$totalk].$chtotal.','.$excelTitle[$totalk].$adtotal.')');											}		$objPHPExcel->getActiveSheet()->setSharedStyle($sharedStyle1, 'A'.$num.':'.$excelTitle[$datenum].$num);		$objPHPExcel->setActiveSheetIndex(0)					->setCellValue('B'.$num, '=SUM(D'.$num.':'.$excelTitle[$datenum].$num.')');				$objActSheet->getStyle('A'.$num)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);		$objActSheet->getStyle('C'.$num)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);		// 设置切换标签的名字		$objPHPExcel->getActiveSheet()->setTitle('培优网用户点击统计');		//直接输出到浏览器		header('Content-Type: application/vnd.ms-excel');		header('Content-Disposition: attachment;filename="'.$excelName.'"');		header('Cache-Control: max-age=0');				$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');		$objWriter->save('php://output');		exit; 	} 	
登入後複製
?
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

華為GT3 Pro和GT4的差異是什麼? 華為GT3 Pro和GT4的差異是什麼? Dec 29, 2023 pm 02:27 PM

華為GT3 Pro和GT4的差異是什麼?

修復:截圖工具在 Windows 11 中不起作用 修復:截圖工具在 Windows 11 中不起作用 Aug 24, 2023 am 09:48 AM

修復:截圖工具在 Windows 11 中不起作用

如何修復無法連線到iPhone上的App Store錯誤 如何修復無法連線到iPhone上的App Store錯誤 Jul 29, 2023 am 08:22 AM

如何修復無法連線到iPhone上的App Store錯誤

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决

watch4pro好還是gt好 watch4pro好還是gt好 Sep 26, 2023 pm 02:45 PM

watch4pro好還是gt好

如何使用 iPadOS 17.4 優化 iPad 電池壽命 如何使用 iPadOS 17.4 優化 iPad 電池壽命 Mar 21, 2024 pm 10:31 PM

如何使用 iPadOS 17.4 優化 iPad 電池壽命

管澤元江疏影體驗華為 MateBook GT 14:科技藝術完美結合 管澤元江疏影體驗華為 MateBook GT 14:科技藝術完美結合 Aug 10, 2024 pm 09:51 PM

管澤元江疏影體驗華為 MateBook GT 14:科技藝術完美結合

请教怎么修改url某一参数的参数值呢?是要拆开了再拼回去吗 请教怎么修改url某一参数的参数值呢?是要拆开了再拼回去吗 Jun 13, 2016 am 10:24 AM

请教怎么修改url某一参数的参数值呢?是要拆开了再拼回去吗

See all articles