天天看點

thinkPHP5.0 使用PHPExcel導出Excel檔案

首先下載下傳PHPExcel類。網上很多,自行下載下傳。

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

thinkPHP5.0 使用PHPExcel導出Excel檔案

下載下傳存放目錄.jpg

而composer下載下傳的是:

thinkPHP5.0 使用PHPExcel導出Excel檔案

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這個檔案:

thinkPHP5.0 使用PHPExcel導出Excel檔案

加載.jpg

最後不寫php。這樣就加載進來了。

接下來執行個體化類時候,一定要加“\”。

thinkPHP5.0 使用PHPExcel導出Excel檔案

控制器.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檔案
           

到這裡,資料導出已經完成

thinkPHP5.0 使用PHPExcel導出Excel檔案

下載下傳完成.jpg

thinkPHP5.0 使用PHPExcel導出Excel檔案

内容.jpg