以下學(xué)習(xí)筆記均是從慕課網(wǎng)的視頻里整理得來,僅作自己學(xué)習(xí)記錄和交流之用,課程鏈接為 http://www.imooc.com/view/433
學(xué)習(xí)PHPExcel準(zhǔn)備工作
php版本不能太低
保持php版本5.3以上
下載PHPExcel插件
https://github.com/PHPOffice/PHPExcel/archive/1.8.1.zip
解壓后提取html' target='_blank'>classes文件夾到工作目錄,并重命名為excel
此處還用到了虛擬域名的設(shè)置,可以參考下篇博文:http://blog.csdn.net/panjican/article/details/51660751
使用PHPExcel導(dǎo)出文件步驟
方法一:
<?php header("Content-Type: text/html;charset=utf-8"); $dir = dirname(__FILE__);//找到當(dāng)前腳本所在路徑 require_once $dir."/PHPExcel.php"; //引入文件 $obj = new PHPExcel();// 實(shí)例化PHPExcel類,等價(jià)于在桌面上新建一個(gè)excel表格 $objSheet = $obj->getActiveSheet(); //獲得當(dāng)前活動sheet的操作對象 $objSheet->setTitle('demo'); //給當(dāng)前活動sheet設(shè)置名稱 //方法1 $objSheet->setCellValue("A1","姓名")->setCellValue("B1","分?jǐn)?shù)"); //給當(dāng)前活動sheet填充數(shù)據(jù) $objSheet->setCellValue("A2","張三")->setCellValue("B2","50"); $objWriter = PHPExcel_IOFactory::createWriter($obj,"Excel2007"); //按照指定格式生成excel文件 $objWriter->save($dir."/demo.xlsx"); //保存文件?>
方法二:
<?php header("Content-Type: text/html;charset=utf-8"); $dir = dirname(__FILE__);//找到當(dāng)前腳本所在路徑 require_once $dir."/PHPExcel.php"; //引入文件 $obj = new PHPExcel();// 實(shí)例化PHPExcel類,等價(jià)于在桌面上新建一個(gè)excel表格 $objSheet = $obj->getActiveSheet(); //獲得當(dāng)前活動sheet的操作對象 $objSheet->setTitle('demo'); //給當(dāng)前活動sheet設(shè)置名稱 //方法二 $array = array( array(), array("","姓名","分?jǐn)?shù)"), array("","李四","60"), array("","王五","100") ); $objSheet->fromArray($array); //直接加載數(shù)據(jù)塊來填充數(shù)據(jù) $objWriter = PHPExcel_IOFactory::createWriter($obj,"Excel2007"); $objWriter->save($dir."/demo_1.xlsx");?>
PS:推薦使用第一種方法,第一種對內(nèi)存消耗比較少,且代碼可讀性更強(qiáng),而且可以設(shè)置單元格的樣式
??
PHPExcel導(dǎo)出MySQL數(shù)據(jù)庫數(shù)據(jù)
①讀取數(shù)據(jù)并輸出到本地文件保存
數(shù)據(jù)庫結(jié)構(gòu)
本人相關(guān)文件放置目錄位置
dbconfig.php
<?php $phpexcel = array( 'host' => "127.0.0.1", 'username' => "root", 'password' => "", 'database' => "phpexcel", 'charset' => "utf8" );?>
db.php
<?php require_once dirname(__FILE__)."/dbconfig.php"; //引入配置文件 class db { public $conn = null; //構(gòu)造方法 實(shí)例化類時(shí)自動調(diào)用 public function __construct($config){ $this->conn = mysqli_connect($config['host'],$config['username'],$config['password'],$config['database']) or die(mysqli_connect_error()); //連接數(shù)據(jù)庫 mysqli_query($this->conn, "set names ".$config['charset']) or die(mysqli_connect_error());//設(shè)定mysql編碼 } //根據(jù)傳入sql語句 查詢mysql結(jié)果集 public function getResult($sql){ $resource = mysqli_query($this->conn,$sql) or die(mysqli_connect_error());//查詢sql語句 $res = array(); while($row = mysqli_fetch_assoc($resource)){ $res[] = $row; } return $res; } //根據(jù)傳入年級數(shù) 查詢每個(gè)年級的學(xué)生數(shù)據(jù) public function getDataByGrade($grade){ $sql = "select username,score,class from user where grade=".$grade." order by score desc"; $res = self::getResult($sql); return $res; } }?>
export.php
<?php $dir = dirname(__FILE__); //查找當(dāng)前腳本所在路徑 require_once $dir."/db.php";//引入mysql操作類文件 require_once $dir."/PHPExcel.php";//引入PHPExcel文件 $db = new db($phpexcel); //實(shí)例化db類 連接數(shù)據(jù)庫 $objPHPExcel = new PHPExcel(); //實(shí)例化PHPExcel類,等同于在桌面上新建一個(gè)excel for( $i = 1; $i <= 3; $i++ ){ if($i > 1){ $objPHPExcel->createSheet();//創(chuàng)建新的內(nèi)置表 } $objPHPExcel->setActiveSheetIndex( $i - 1 ); //把新創(chuàng)建的sheet設(shè)定為當(dāng)前活動sheet $objSheet = $objPHPExcel->getActiveSheet(); //獲取當(dāng)前活動sheet $objSheet->setTitle($i."年級"); //給當(dāng)前活動sheet起個(gè)名字 $data = $db->getDataByGrade($i); //查詢每個(gè)年級的學(xué)生數(shù)據(jù) $objSheet->setCellValue("A1","姓名")->setCellValue("B1","分?jǐn)?shù)")->setCellValue("C1","班級");//填充數(shù)據(jù) $j = 2; foreach($data as $key =>$value ){ $objSheet->setCellValue("A".$j,$value['username'])->setCellValue("B".$j,$value['score'])->setCellValue("C".$j,$value['class']."班"); $j++; } } $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel5'); //生成excel文件 $objWriter->save($dir."/export_1.xls");//保存文件 ?>
在瀏覽器輸入鏈接地址,并打開
生成的excel文件,打開如下:
②輸出至瀏覽器
export.php
<?php $dir = dirname(__FILE__); //查找當(dāng)前腳本所在路徑 require_once $dir."/db.php";//引入mysql操作類文件 require_once $dir."/PHPExcel.php";//引入PHPExcel文件 $db = new db($phpexcel); //實(shí)例化db類 連接數(shù)據(jù)庫 $objPHPExcel = new PHPExcel(); //實(shí)例化PHPExcel類,等同于在桌面上新建一個(gè)excel for( $i = 1; $i <= 3; $i++ ){ if($i > 1){ $objPHPExcel->createSheet();//創(chuàng)建新的內(nèi)置表 } $objPHPExcel->setActiveSheetIndex( $i - 1 ); //把新創(chuàng)建的sheet設(shè)定為當(dāng)前活動sheet $objSheet = $objPHPExcel->getActiveSheet(); //獲取當(dāng)前活動sheet $objSheet->setTitle($i."年級"); $data = $db->getDataByGrade($i); //查詢每個(gè)年級的學(xué)生數(shù)據(jù) $objSheet->setCellValue("A1","姓名")->setCellValue("B1","分?jǐn)?shù)")->setCellValue("C1","班級");//填充數(shù)據(jù) $j = 2; foreach($data as $key =>$value ){ $objSheet->setCellValue("A".$j,$value['username'])->setCellValue("B".$j,$value['score'])->setCellValue("C".$j,$value['class']."班"); $j++; } } $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel5'); //生成excel文件 //$objWriter->save($dir."/export_1.xls");//保存文件 browser_export('Excel5','browser_export03.xls'); //輸出到瀏覽器 $objWriter->save("php://output"); function browser_export($type,$filename){ if( $type == "Excel5" ){ // Redirect output to a client’s web browser (Excel5) 告訴瀏覽器將要輸出excel03文件 header('Content-Type: application/vnd.ms-excel'); }elseif( $type == "Excel2007E" ){ // Redirect output to a client’s web browser (Excel2007) 告訴瀏覽器將要輸出excel07文件 header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); } //告訴瀏覽器將輸出文件的名稱 header('Content-Disposition: attachment;filename="'.$filename.'"'); //禁止緩存 header('Cache-Control: max-age=0'); /* // If you're serving to IE 9, then the following may be needed header('Cache-Control: max-age=1'); */ }?>在瀏覽器輸入鏈接,并打開,頁面會彈框提示打開或者下載,打開文件,文件內(nèi)容跟保存到本地的文件內(nèi)容是一致的。
PHPExcel導(dǎo)入文件
reader.php
<?php header("Content-Type:text/html;charset=utf-8");$dir=dirname(__FILE__);//找到當(dāng)前腳本所在路徑require $dir."/PHPExcel/IOFactory.php";//引入讀取excel的類文件$filename=$dir."/export_1.xls";$fileType=PHPExcel_IOFactory::identify($filename);//自動獲取文件的類型提供給phpexcel用$objReader=PHPExcel_IOFactory::createReader($fileType);//獲取文件讀取操作對象$sheetName=array("2年級","3年級");$objReader->setLoadSheetsOnly($sheetName);//只加載指定的sheet$objPHPExcel=$objReader->load($filename);//加載文件/**$sheetCount=$objPHPExcel->getSheetCount();//獲取excel文件里有多少個(gè)sheetfor($i=0;$i<$sheetCount;$i++){ $data=$objPHPExcel->getSheet($i)->toArray();//讀取每個(gè)sheet里的數(shù)據(jù) 全部放入到數(shù)組中 print_r($data);}**/foreach($objPHPExcel->getWorksheetIterator() as $sheet){//循環(huán)取sheet foreach($sheet->getRowIterator() as $row){//逐行處理 if($row->getRowIndex()<2){ continue; } foreach($row->getCellIterator() as $cell){//逐列讀取 $data=$cell->getValue();//獲取單元格數(shù)據(jù) echo $data." "; } echo '<br/>'; } echo '<br/>';}exit;?>
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。
|
新聞熱點(diǎn)
疑難解答
圖片精選