首先下載下傳PHPExcel類。網上很多,自行下載下傳。
我下載下傳的跟composer下載下傳的不太一樣。我下載下傳的是
下載下傳存放目錄.jpg
而composer下載下傳的是:
composer下載下傳.jpg
本篇使用的是第一種。是以下載下傳請下載下傳對應的。
前端代碼:
<form action="ADMIN_MAIN/Excel/out" enctype="multipart/form-data" method="post">
<input type="submit" value="導出">
</form>
建立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
執行個體化完了之後就先把資料庫裡面的資料查出來:
$sql = db('sys_user')->select();
有了資料,就可以設定Excel表的表頭資訊了:
/*--------------設定表頭資訊------------------*/
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1', 'ID編号')
->setCellValue('B1', '使用者名')
->setCellValue('C1', '手機号');
這裡的A1,B1是A列第一行。以此類推,就是表頭了,想要哪些資訊就寫什麼,隻要資料庫有,接下來可以對的上就行。
接下來就是查到的資訊,對号入座到表格中:
/*--------------開始從資料庫提取資訊插入Excel表中------------------*/
$i=2; //定義一個i變量,目的是在循環輸出資料是控制行數
$count = count($sql); //計算有多少條資料
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循環。不知道的,我也無能為力。
接下來就是設定導入表的名稱等内容了
/*--------------下面是設定其他資訊------------------*/
$objPHPExcel->getActiveSheet()->setTitle('user'); //設定sheet的名稱
$objPHPExcel->setActiveSheetIndex(0); //設定sheet的起始位置
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); //通過PHPExcel_IOFactory的寫函數将上面資料寫出來
$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檔案
到這裡,資料導出已經完成
下載下傳完成.jpg
内容.jpg