PHP输出Excel实例代码
生活随笔
收集整理的這篇文章主要介紹了
PHP输出Excel实例代码
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?這里使用PHPExcel的開源類
一個完整的實例:
<?php require_once("../includes/function.php"); //提供了SQL注入檢測函數inject_check require_once("../class/DB.php"); //DB操作類,自己擴展一下 $db = new DB(); if($_GET['show_year']){ $_GET['show_year'] = inject_check($_GET['show_year']); } else { echo "<script>location.href='{$_SERVER['REQUEST_URI']}';</script>"; return; } //查出開設預約的班級的學生名單 $sql = "select * from bishe_student,student where bishe_student.sno=student.sno "; if($_GET['show_year'] && $_GET['show_year']!='-1'){ $lagreYear = $_GET['show_year']+1; $sql .= " and bishe_student.time>='{$_GET['show_year']}-01-01 00:00:00' and bishe_student.time<'{$lagreYear}-01-01 00:00:00'"; } $sql .= "order by bishe_student.time asc; "; $rs = $db->query($sql); /** *該PHP代碼塊開始為能夠輸出EXCEL文件作準備 */ **********************第一步,開頭操作,包括引入類、設定文件基本屬性 require_once("../Excel/Classes/PHPExcel.php"); require_once("../Excel/Classes/PHPExcel/Writer/Excel5.php"); //單元格的字母坐標 $colx = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','aa','ab','ac','ad','ae','af','ag','ah','ai','ak','al','am','an','ao','ap','aq','ar','as','at','au','av','aw','ax','ay','az'); // 創(chuàng)建一個處理對象實例 $objExcel = new PHPExcel(); // 創(chuàng)建文件格式寫入對象實例, uncomment $objWriter = new PHPExcel_Writer_Excel5($objExcel); //設置文檔基本屬性 $objProps = $objExcel->getProperties(); $objProps->setCreator( gbkToUtf8("計算機學院專業(yè)實踐中心") ); $objProps->setLastModifiedBy( gbkToUtf8("計算機學院專業(yè)實踐中心") ); $objProps->setTitle( gbkToUtf8("畢業(yè)設計預約學生表") ); $objProps->setSubject( gbkToUtf8("畢業(yè)設計預約學生表") ); $objProps->setDescription( gbkToUtf8("畢業(yè)設計預約學生表") ); $objProps->setKeywords( gbkToUtf8("畢業(yè)設計預約學生表") ); $objProps->setCategory( gbkToUtf8("畢業(yè)設計預約學生表") ); //************************************* //設置當前的sheet索引,用于后續(xù)的內容操作。 //一般只有在使用多個sheet的時候才需要顯示調用。 //缺省情況下,PHPExcel會自動創(chuàng)建第一個sheet被設置SheetIndex=0 $objExcel->setActiveSheetIndex(0); $objActSheet = $objExcel->getActiveSheet(); //設置當前活動sheet的名稱 $objActSheet->setTitle('sheet1'); //設置寬度 function setWidth($index,$width=5){ global $objActSheet; $objActSheet->getColumnDimension(gbkToUtf8($index))->setWidth($width); } //寬度設置 for($i=0;$i<51;$i++){ //echo $colx[$i].""; $ind = $colx[$i]; setWidth(gbkToUtf8("$ind"),11); } $objActSheet->getRowDimension(1)->setRowHeight(30); $objActSheet->getRowDimension(2)->setRowHeight(20); $objActSheet->getRowDimension(3)->setRowHeight(16); //函數:設置border function setBorder($index){ global $objActSheet; $objActSheet->getStyle($index)->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN ); $objActSheet->getStyle($index)->getBorders()->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN ); $objActSheet->getStyle($index)->getBorders()->getRight()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN ); $objActSheet->getStyle($index)->getBorders()->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN ); $objActSheet->getStyle($index)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objActSheet->getStyle($index)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); $objActSheet->getStyle($index)->getAlignment()->setWrapText(true); } //設置值 function setValue($index,$value){ global $objActSheet; $objActSheet->setCellValue($index,gbkToUtf8($value) ); } //設置值 function setValueGBK($index,$value){ global $objActSheet; $objActSheet->getCell($index)->setValueExplicit($value, PHPExcel_Cell_DataType::TYPE_STRING); } //合并單元格 function merge($fc,$lc){ global $objActSheet; $objActSheet->mergeCells($fc.":".$lc); } //********************開始寫入數據 $lastIndex = 10; $objActSheet->setCellValue('A1',gbkToUtf8( '畢業(yè)設計上機預約學生表' ) ); //合并單元格 $objActSheet->mergeCells("A1:".$colx[$lastIndex]."1"); //設置樣式 $objStyleA1 = $objActSheet->getStyle('A1'); $objStyleA1->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objFontA1 = $objStyleA1->getFont(); $objFontA1->setName('Courier New'); $objFontA1->setSize(18); $objFontA1->setBold(true); $rowIndexB = 3; function showBottomRows($xuhao='序號',$xuehao='學號',$xingming='姓名',$bishelaoshi='畢設老師',$bishetimu='畢設題目',$phone='電話',$email='Email',$beizhu='備注'){ global $colx; global $rowIndexB; $colIndexB = 0; //都分三步,設值、合并、邊框 //序號 setValue($colx[$colIndexB].$rowIndexB , $xuhao); merge($colx[$colIndexB].$rowIndexB , $colx[$colIndexB].$rowIndexB ); $colIndexB = $colIndexB+1; //學號 setValue($colx[$colIndexB].$rowIndexB , $xuehao); merge($colx[$colIndexB].$rowIndexB , $colx[$colIndexB].$rowIndexB ); $colIndexB = $colIndexB+1; //姓名 setValue($colx[$colIndexB].$rowIndexB , $xingming); merge($colx[$colIndexB].$rowIndexB , $colx[$colIndexB].$rowIndexB ); $colIndexB = $colIndexB+1; //畢設老師 setValue($colx[$colIndexB].$rowIndexB , $bishelaoshi); merge($colx[$colIndexB].$rowIndexB , $colx[$colIndexB].$rowIndexB ); $colIndexB = $colIndexB+1; //畢設題目 setValue($colx[$colIndexB].$rowIndexB , $bishetimu); merge($colx[$colIndexB].$rowIndexB , $colx[$colIndexB+2].$rowIndexB ); $colIndexB = $colIndexB+3; //電話 setValue($colx[$colIndexB].$rowIndexB , $phone); merge($colx[$colIndexB].$rowIndexB , $colx[$colIndexB].$rowIndexB ); $colIndexB = $colIndexB+1; //Email setValue($colx[$colIndexB].$rowIndexB , $email); merge($colx[$colIndexB].$rowIndexB , $colx[$colIndexB+1].$rowIndexB ); $colIndexB = $colIndexB+2; //備注 setValue($colx[$colIndexB].$rowIndexB , $beizhu); merge($colx[$colIndexB].$rowIndexB , $colx[$colIndexB].$rowIndexB ); $colIndexB = $colIndexB+1; for($xx=0;$xx<$lastIndex;$xx++){ setBorder($colx[$xx].$rowIndexB); } $rowIndexB++; } showBottomRows(); //********************************************表格頭部結束 *********************第一步結束,第二步就可以開始打印數據,在下面的主要函數里面 $order=1; while($row = $db->getRows($rs)){ showBottomRows( $order++ , " ".$row['sno'], " ".$row['sname'] , " ".$row['bishe_teacher'], " ".$row['bishe_title'], " ".$row['bishe_phone'], " ".$row['bishe_email'], " " ); } //刷新border for($i=0;$i<=$lastIndex;$i++){ $objStyleA3 = $objActSheet->getStyle('A3'); $objStyleA3->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN ); $objStyleA3->getBorders()->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN ); $objStyleA3->getBorders()->getRight()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN ); $objStyleA3->getBorders()->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN ); $objStyleA3->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objStyleA3->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); //$objActSheet->duplicateStyle($objStyleA3, 'A3:'.$colx[$lastIndex].(mysql_num_rows( $result_stuList )+3) ); $objActSheet->duplicateStyle($objStyleA3, 'A3:'.$colx[$lastIndex].($db->getRowsNum($rs)+3) ); } $cancel_time=date("YmdHis"); $outputFileName = "{$cancel_time}bisheYuyueStudentList.xls"; //到文件 $objWriter->save('../temp/'.$outputFileName); header("Content-Type: application/OCTET-STREAM"); header("Content-Disposition: inline; filename={$_GET['show_year']}年畢業(yè)設計上機預約學生表.xls"); readfile('../temp/'.$outputFileName); echo "<script language='javascript'> location.href='{$_SERVER['REQUEST_URI']}'; </script> "; ?>?
?
?
轉載于:https://www.cnblogs.com/crazyant/archive/2011/02/23/2823776.html
總結
以上是生活随笔為你收集整理的PHP输出Excel实例代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机管理-共享打印,打印机局域网共享怎
- 下一篇: UISwitch的使用