首先下載PHPExcel類。網(wǎng)上很多,自行下載。
我下載的跟composer下載的不太一樣。我下載的是
下載存放目錄.jpg
而composer下載的是:
composer下載.jpg
本篇使用的是第一種。所以下載請下載對應的。
前端代碼:
<form action="ADMIN_MAIN/Excel/out" enctype="multipart/form-data" method="post">
<input type="submit" value="導出">
</form>
創(chuàng)建Excel控制器和out方法:
首先use兩個類,否則會報錯:
use PHPExcel_IOFactory;
use PHPExcel;
然后引入vendor里面的PHPExcel類:
vendor("PHPExcel.PHPExcel.PHPExcel");
vendor("PHPExcel.PHPExcel.Writer.Excel5");
vendor("PHPExcel.PHPExcel.Writer.Excel2007");
vendor("PHPExcel.PHPExcel.IOFactory");
一般引用vendor里面的類或者插件用vendor();
里面加載的就是vendor文件,然后想要加載哪個文件,直接寫就行,中間的“.”相當于文件路徑的“/”。
例如加載excel5這個文件:
加載.jpg
最后不寫php。這樣就加載進來了。
接下來實例化類時候,一定要加“\”。
控制器.jpg
實例化完了之后就先把數(shù)據(jù)庫里面的數(shù)據(jù)查出來:
$sql = db('sys_user')->select();
有了數(shù)據(jù),就可以設置Excel表的表頭信息了:
/*--------------設置表頭信息------------------*/
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1', 'ID編號')
->setCellValue('B1', '用戶名')
->setCellValue('C1', '手機號');
這里的A1,B1是A列第一行。以此類推,就是表頭了,想要哪些信息就寫什么,只要數(shù)據(jù)庫有,接下來可以對的上就行。
接下來就是查到的信息,對號入座到表格中:
/*--------------開始從數(shù)據(jù)庫提取信息插入Excel表中------------------*/
$i=2; //定義一個i變量,目的是在循環(huán)輸出數(shù)據(jù)是控制行數(shù)
$count = count($sql); //計算有多少條數(shù)據(jù)
for ($i = 2; $i <= $count+1; $i++) {
$objPHPExcel->getActiveSheet()->setCellValue('A' . $i, $sql[$i-2][uid]);
$objPHPExcel->getActiveSheet()->setCellValue('B' . $i, $sql[$i-2][user_name]);
$objPHPExcel->getActiveSheet()->setCellValue('C' . $i, $sql[$i-2][user_tel]);
$i = 2,因為第一行是表頭,所以寫到表格時候只能從第二行開始寫。
然后for循環(huán)。不知道的,我也無能為力。
接下來就是設置導入表的名稱等內容了
/*--------------下面是設置其他信息------------------*/
$objPHPExcel->getActiveSheet()->setTitle('user'); //設置sheet的名稱
$objPHPExcel->setActiveSheetIndex(0); //設置sheet的起始位置
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); //通過PHPExcel_IOFactory的寫函數(shù)將上面數(shù)據(jù)寫出來
$PHPWriter = \PHPExcel_IOFactory::createWriter( $objPHPExcel,"Excel2007");
header('Content-Disposition: attachment;filename="用戶信息.xlsx"');
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
$PHPWriter->save("php://output"); //表示在$path路徑下面生成demo.xlsx文件
到這里,數(shù)據(jù)導出已經(jīng)完成
下載完成.jpg
內容.jpg