1. 程式人生 > >php 操作excel

php 操作excel

類文件 highlight reat tro tde 新建 pread cati apply

<?php 
	$dir=dirname(__FILE__);//查找當前腳本所在路徑
	require $dir."/db.php";//引入mysql操作類文件
	require $dir."/PHPExcel/PHPExcel.php";//引入PHPExcel
	$db=new db($phpexcel);//實例化db類 連接數據庫
	$objPHPExcel=new PHPExcel();//實例化PHPExcel類, 等同於在桌面上新建一個excel
	$objSheet=$objPHPExcel->getActiveSheet();//獲得當前活動單元格
	//開始本節課代碼編寫
	$objSheet->getDefaultStyle()->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER)->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);//設置excel文件默認水平垂直方向居中
	$objSheet->getDefaultStyle()->getFont()->setSize(14)->setName("微軟雅黑");//設置默認字體大小和格式
	$objSheet->getStyle("A2:Z2")->getFont()->setSize(20)->setBold(true);//設置第二行字體大小和加粗
	$objSheet->getStyle("A3:Z3")->getFont()->setSize(16)->setBold(true);//設置第三行字體大小和加粗
	$objSheet->getDefaultRowDimension()->setRowHeight(30);//設置默認行高
	$objSheet->getRowDimension(2)->setRowHeight(50);//設置第二行行高
	$objSheet->getRowDimension(3)->setRowHeight(40);//設置第三行行高
	$gradeInfo=$db->getAllGrade();//查詢所有的年級
	$index=0;
	foreach($gradeInfo as $g_k=>$g_v){
		$gradeIndex=getCells($index*2);//獲取年級信息所在列
		$objSheet->setCellValue($gradeIndex."2","高".$g_v[‘grade‘]);
		$classInfo=$db->getClassByGrade($g_v[‘grade‘]);//查詢每個年級所有的班級
		foreach($classInfo as $c_k=>$c_v){
			$nameIndex=getCells($index*2);//獲得每個班級學生姓名所在列位置
			$scoreIndex=getCells($index*2+1);//獲得每個班級學生分數所在列位置
			$objSheet->mergeCells($nameIndex."3:".$scoreIndex."3");//合並每個班級的單元格
			$objSheet->getStyle($nameIndex."3:".$scoreIndex."3")->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setRGB(‘6fc144‘);//填充班級背景顏色
			$classBorder=getBorderStyle("445cc1");//獲取班級邊框樣式代碼
			$objSheet->getStyle($nameIndex."3:".$scoreIndex."3")->applyFromArray($classBorder);//設置每個班級的邊框
			$info=$db->getDataByClassGrade($c_v[‘class‘],$g_v[‘grade‘]);//查詢每個班級的學生信息
			$objSheet->setCellValue($nameIndex."3",$c_v[‘class‘]."班");//填充班級信息	
			$objSheet->getStyle($nameIndex)->getAlignment()->setWrapText(true);//設置文字自動換行
			$objSheet->setCellValue($nameIndex."4","姓名\n換行")->setCellValue($scoreIndex."4","分數");	
			$objSheet->getStyle($scoreIndex)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT);//設置某列單元格格式為文本格式
			$j=5;
			foreach($info as $key=>$val){
				$objSheet->setCellValue($nameIndex.$j,$val[‘username‘])->setCellValue($scoreIndex.$j,$val[‘score‘]."21312321321321321321");//填充學生信息
				//$objSheet->setCellValue($nameIndex.$j,$val[‘username‘])->setCellValueExplicit($scoreIndex.$j,$val[‘score‘]."12321321321321312",PHPExcel_Cell_DataType::TYPE_STRING);//填充學生信息
				$j++;
			}
			$index++;
		}
		$endGradeIndex=getCells($index*2-1);//獲得每個年級的終止單元格
		$objSheet->mergeCells($gradeIndex."2:".$endGradeIndex."2");//合並每個年級的單元格
		$objSheet->getStyle($gradeIndex."2:".$endGradeIndex."2")->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setRGB(‘c1b644‘);//填充年級背景顏色
		$gradeBorder=getBorderStyle("c144b1");//獲取年級邊框樣式代碼
		$objSheet->getStyle($gradeIndex."2:".$endGradeIndex."2")->applyFromArray($gradeBorder);//設置每個年級的邊框
	}


	$objWriter=PHPExcel_IOFactory::createWriter($objPHPExcel,‘Excel5‘);//生成excel文件
	//$objWriter->save($dir."/export_1.xls");//保存文件
	browser_export(‘Excel5‘,‘browser_excel03.xls‘);//輸出到瀏覽器
	$objWriter->save("php://output");


	function browser_export($type,$filename){
		if($type=="Excel5"){
				header(‘Content-Type: application/vnd.ms-excel‘);//告訴瀏覽器將要輸出excel03文件
		}else{
				header(‘Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet‘);//告訴瀏覽器數據excel07文件
		}
		header(‘Content-Disposition: attachment;filename="‘.$filename.‘"‘);//告訴瀏覽器將輸出文件的名稱
		header(‘Cache-Control: max-age=0‘);//禁止緩存
	}

/**
**根據下標獲得單元格所在列位置
**/
	function getCells($index){
		$arr=range(‘A‘,‘Z‘);
		//$arr=array(A,B,C,D,E,F,G,H,I,J,K,L,M,N,....Z);
		return $arr[$index];
	}

/**
**獲取邊框樣式代碼
**/
	function getBorderStyle($color){
			$styleArray = array(
				‘borders‘ => array(
					‘outline‘ => array(
						‘style‘ => PHPExcel_Style_Border::BORDER_THICK,
						‘color‘ => array(‘rgb‘ => $color),
					),
				),
			);
			return $styleArray;
	}


?>

  

php 操作excel