php 操作excel
阿新 • • 發佈:2017-07-11
類文件 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