PHP生成Excel
延續上篇的php讀取Excel
這邊提到的是php生成Excel
生成Excel檔的時候,使用了CodePlex套件 (下載:http://phpexcel.codeplex.com/releases/view/107442)
這個套件生成Excel的優點在於較像寫程式也比較簡單
(有用過上一種套件寫法的人就知道,需要使用很多tr、td,對工程師而言...很累XDD)
但這款套件的缺點是它的函式庫很龐大
如果你的程式運算量或是資料輸出量太大可能反應就有點慢
雖然如此,只要適當簡化功能,效果還是很好的
下面實作一個簡單的範例
從資料庫撈出會員資料後,直接輸出成excel檔
$connection=mysql_connect("localhost","root","111111");
//下面兩個決定輸出中文不會變亂碼
mysql_query("SET NAMES utf8");
mysql_query("SET CHARACTER_SET utf8");
mysql_select_db("map");
//從資料庫讀取資料
$sql_member = "SELECT * FROM `members`";
$query_member = mysql_query($sql_member);
$data_member = array();
$j=0;
//從這裡開始就是生成Excel檔的方法,首先必須引入Excel轉換的class檔案
require_once ('C:www\phpExcelReader\phpexcel_doc\Classes\PHPExcel.php');
//新增PHPexcel物件
$objPHPExcel = new PHPExcel();
//作者(注意:以下一長串後面都沒分號結束)
$objPHPExcel->getProperties()->setCreator("史丹利")
//上次修改者
->setLastModifiedBy("Stanley")
//檔案標題
->setTitle("會員名單")
//檔案子標題
->setSubject("會員名單子標題")
//檔案描述
->setDescription("檔案描述")
//檔案標記
->setKeywords("檔案標記")
//檔案類別
->setCategory("檔案類別");
//許多資料都提到是顯示目前資料表,但把0改成1就會error,是否有大神願意求解
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1', '使用者序號')
->setCellValue('B1', '使用者名稱')
->setCellValue('C1', '使用者email')
->setCellValue('D1', '使用者資訊');
while($res_member = mysql_fetch_array($query_member)){
//從資料庫取出的資料
$data_member[$j]['uid'] = $res_member['uid'];
$data_member[$j]['uname'] = $res_member['uname'];
$data_member[$j]['u_mail'] = $res_member['u_mail'];
$data_member[$j]['u_info'] = $res_member['u_info'];
//把值放進對應的欄位
$k = $j+2; //因為第一列已經放入欄位標題,陣列從0開始,所以必須+2開始
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A'.$k, $data_member[$j]['uid'])
->setCellValue('B'.$k, $data_member[$j]['uname'])
->setCellValue('C'.$k, $data_member[$j]['u_mail'])
->setCellValue('D'.$k, $data_member[$j]['u_info']);
$j++;
}
$objPHPExcel->setActiveSheetIndex(0);
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
//建議輸出xls檔,較無相容性問題
//$objWriter->save(str_replace('.php', '.xls', __FILE__));
$objWriter->save(str_replace('.php', '.xlsx', __FILE__));
下圖是剛剛提到k必須加2的原因
k+2後,資料從A2(1)->B2(stanley543)->C2(@hotmail.com)->D2(0)->A3(2)依序存入Excel
如果覺得對你有幫助的話. 請幫小弟按個讚吧~
相關文章:PHP讀取excel