在實習的時候,接到一個任務要求將用戶搜索出來的記錄導出到excel,並保存在客戶端,在網上找到了PHPExcel,用了一下,感受很強大,基本上能夠設置excel的全部樣式。而我也只是用到了裏面的不多的功能,就是導出。php
在貼出代碼以前首先說明一下,設置路徑是很是關鍵的,thinkphp和php設置路徑的差異比較大,必定要多注意,不過我是如今php上測試的,而後再thinkphp框架下移植,公司要求必須在thinkphp下開發,其實thinkphp真的沒有我想的那麼好,雖然是方便了,可是不少限制了編程的思惟,並非很靈活。web
其實導出的代碼很簡單,下面是個人一個例子:sql
header("charset=utf-8");thinkphp
ini_set ('memory_limit', '128M');數據庫
$type=$_REQUEST['type'];編程
$search_type=$_REQUEST['search_type'];數組
$keyword=$_REQUEST['keyword'];app
$sql_select="SELECT * FROM pp_view_planorder_prouduct WHERE type='".$type."' AND ".$search_type." LIKE '%".$keyword."%'";框架
$Model = new Model();測試
$list=$Model->query($sql_select);
//echo($sql_select);
error_reporting(E_ALL);
import("phpexcel.PHPExcel",dirname(__FILE__),".php");
$objPHPExcel = new PHPExcel();
// Set document properties
$objPHPExcel->getProperties()->setCreator("aigindustries")//建立者
->setLastModifiedBy("aigindustries")//最後修改者
->setTitle("aigindustries")//標題
->setSubject("aigindustries")//主題
->setDescription("aigindustries")//備註
->setKeywords("aigindustries")//關鍵字
->setCategory("aigindustries");//分類
// Add some data
$objPHPExcel->setActiveSheetIndex(0)
//設置表的名稱標題
->setCellValue('A1',"季度")
->setCellValue('B1',"部門")
->setCellValue('C1',"姓名")
->setCellValue('D1',"備貨性質")
->setCellValue('E1',"組別")
->setCellValue('F1',"類型")
->setCellValue('G1',"品名")
->setCellValue('H1',"規格")
->setCellValue('I1',"材質")
->setCellValue('J1',"包裝")
->setCellValue('K1',"季度第一個月定貨量")
->setCellValue('L1',"季度第二個月定貨量")
->setCellValue('M1',"季度第三個月定貨量");
foreach($list as $k => $v)
{
$num=$k+2;
$objPHPExcel->setActiveSheetIndex(0)
//Excel的第A列,uid是你查出數組的鍵值,下面以此類推
->setCellValue('A'.$num, $v['quarter'])
->setCellValue('B'.$num, $v['userdept'])
->setCellValue('C'.$num, $v['username'])
->setCellValue('D'.$num, $v['prdfeature'])
->setCellValue('E'.$num, $v['prdgroup'])
->setCellValue('F'.$num, $v['prdkind'])
->setCellValue('G'.$num, $v['prdname'])
->setCellValue('H'.$num, $v['standard'])
->setCellValue('I'.$num, $v['resource'])
->setCellValue('J'.$num, $v['pack'])
->setCellValue('K'.$num, $v['value1'])
->setCellValue('L'.$num, $v['value2'])
->setCellValue('M'.$num, $v['value3']);
}
// Rename worksheet
$objPHPExcel->getActiveSheet()->setTitle($type.'-該季度全部定貨信息');
// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$objPHPExcel->setActiveSheetIndex(0);
// Redirect output to a client’s web browser (Excel5)
header('Content-Type: application/vnd.ms-excel;charset=utf-8');
header('Content-Disposition: attachment;filename="'.$type.'-該季度全部定貨信息.xls"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
exit;
上邊的import("phpexcel.PHPExcel",dirname(__FILE__),".php");是thinkphp導入的語句,我直接就將phpexcel放在了action文件夾下,網上說放什麼地方,其實只要能導入都行。導入的方式必定要看thinkphp的手冊,裏面很詳細。
我上面實現的例子就是講數據庫中查詢出來的數據導出到excel表格中,你只要換成本身的查詢出來的數據就能夠了。
元謀人
2012年8月14日15:03:14