PHPExcel

首先下載PHPExcel類(lèi)。網(wǎng)上很多,自行下載。

我下載的跟composer下載的不太一樣。我下載的是

[圖片上傳失敗...(image-58d758-1517978190161)]

而composer下載的是:

[圖片上傳失敗...(image-877d1b-1517978190161)]

本篇使用的是第一種。所以下載請(qǐng)下載對(duì)應(yīng)的。

前端代碼:

<form action="ADMIN_MAIN/Excel/out" enctype="multipart/form-data" method="post">
    <input type="submit" value="導(dǎo)出">
</form>

創(chuàng)建Excel控制器和out方法:

首先use兩個(gè)類(lèi),否則會(huì)報(bào)錯(cuò):

use PHPExcel_IOFactory;
use PHPExcel;

然后引入vendor里面的PHPExcel類(lèi):

vendor("PHPExcel.PHPExcel.PHPExcel");
vendor("PHPExcel.PHPExcel.Writer.Excel5");
vendor("PHPExcel.PHPExcel.Writer.Excel2007");
vendor("PHPExcel.PHPExcel.IOFactory");

一般引用vendor里面的類(lèi)或者插件用vendor();
里面加載的就是vendor文件,然后想要加載哪個(gè)文件,直接寫(xiě)就行,中間的“.”相當(dāng)于文件路徑的“/”。
例如加載excel5這個(gè)文件:

[圖片上傳失敗...(image-e4fc99-1517978190160)]

最后不寫(xiě)php。這樣就加載進(jìn)來(lái)了。
接下來(lái)實(shí)例化類(lèi)時(shí)候,一定要加“\”。

[圖片上傳失敗...(image-530cbf-1517978190160)]

實(shí)例化完了之后就先把數(shù)據(jù)庫(kù)里面的數(shù)據(jù)查出來(lái):

$sql = db('sys_user')->select();

有了數(shù)據(jù),就可以設(shè)置Excel表的表頭信息了:

 /*--------------設(shè)置表頭信息------------------*/
        $objPHPExcel->setActiveSheetIndex(0)
            ->setCellValue('A1', 'ID編號(hào)')
            ->setCellValue('B1', '用戶名')
            ->setCellValue('C1', '手機(jī)號(hào)');

這里的A1,B1是A列第一行。以此類(lèi)推,就是表頭了,想要哪些信息就寫(xiě)什么,只要數(shù)據(jù)庫(kù)有,接下來(lái)可以對(duì)的上就行。

接下來(lái)就是查到的信息,對(duì)號(hào)入座到表格中:

 /*--------------開(kāi)始從數(shù)據(jù)庫(kù)提取信息插入Excel表中------------------*/

        $i=2;  //定義一個(gè)i變量,目的是在循環(huán)輸出數(shù)據(jù)是控制行數(shù)
        $count = count($sql);  //計(jì)算有多少條數(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,因?yàn)榈谝恍惺潜眍^,所以寫(xiě)到表格時(shí)候只能從第二行開(kāi)始寫(xiě)。
然后for循環(huán)。不知道的,我也無(wú)能為力。

接下來(lái)就是設(shè)置導(dǎo)入表的名稱(chēng)等內(nèi)容了

 /*--------------下面是設(shè)置其他信息------------------*/

        $objPHPExcel->getActiveSheet()->setTitle('user');      //設(shè)置sheet的名稱(chēng)
        $objPHPExcel->setActiveSheetIndex(0);                   //設(shè)置sheet的起始位置
        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');   //通過(guò)PHPExcel_IOFactory的寫(xiě)函數(shù)將上面數(shù)據(jù)寫(xiě)出來(lái)
        $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ù)導(dǎo)出已經(jīng)完成

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容