使用 CodeIgniter 輸出 Excel

最近有一個需求是要把網站的資料用 Excel 輸出,我平常慣用的 CodeIgniter 沒有內建這個功能,還好查了一下還是有人寫好了方便的工具,要使用的話首先下載 PHPExcel Library

接著依以下步驟:

步驟一: 解開壓縮檔後把 third_party 整包複製到你的 CI 專案裡相同的位置。

步驟二: 在 application/libraries 建立一個新的 Excel.php 的檔案

  1. <?php   
  2. if (!defined('BASEPATH')) exit('No direct script access allowed');   
  3. /*  
  4.  *  =======================================   
  5.  *  Author     : Team Tech Arise   
  6.  *  License    : Protected   
  7.  *  Email      : [email protected]   
  8.  *   
  9.  *  =======================================   
  10.  */  
  11. require_once APPPATH . "/third_party/PHPExcel.php";   
  12. class Excel extends PHPExcel {   
  13.     public function __construct() {   
  14.         parent::__construct();   
  15.     }   
  16. }   
  17. ?>  

步驟三: 請先準備好資料庫,然後讀取 library

  1. <?php   
  2.     $this->load->library('excel');   
  3.  ?>  

步驟四: 接這參考下面這段程式把資料輸出即可
  1. // get data from databse   
  2.             $fileName = 'contest-data-'.$contest_id.'.xlsx';   
  3.             // load excel library   
  4.             $this->load->library('excel');   
  5.             $objPHPExcel = new PHPExcel();   
  6.             $objPHPExcel->setActiveSheetIndex(0);   
  7.             // set Header   
  8.             $objPHPExcel->getActiveSheet()->SetCellValue('A1''編號');   
  9.             $objPHPExcel->getActiveSheet()->SetCellValue('B1''姓名');   
  10.             $objPHPExcel->getActiveSheet()->SetCellValue('C1''學校');   
  11.             $objPHPExcel->getActiveSheet()->SetCellValue('D1''科系');   
  12.             $objPHPExcel->getActiveSheet()->SetCellValue('E1''職業');   
  13.             $objPHPExcel->getActiveSheet()->SetCellValue('F1''Email');   
  14.             $objPHPExcel->getActiveSheet()->SetCellValue('G1''電話');   
  15.             $objPHPExcel->getActiveSheet()->SetCellValue('H1''地址');   
  16.             $objPHPExcel->getActiveSheet()->SetCellValue('I1''標題');   
  17.             $objPHPExcel->getActiveSheet()->SetCellValue('J1''介紹');   
  18.             $rowCount = 2;   
  19.             foreach($data as $value){   
  20.                 $objPHPExcel->getActiveSheet()->SetCellValue('A' . $rowCount$value['sn']);   
  21.                 $objPHPExcel->getActiveSheet()->SetCellValue('B' . $rowCount$value['name']);   
  22.                 $objPHPExcel->getActiveSheet()->SetCellValue('C' . $rowCount$value['school']);   
  23.                 $objPHPExcel->getActiveSheet()->SetCellValue('D' . $rowCount$value['department']);   
  24.                 $objPHPExcel->getActiveSheet()->SetCellValue('E' . $rowCount$value['career']);   
  25.                 $objPHPExcel->getActiveSheet()->SetCellValue('F' . $rowCount$value['email']);   
  26.                 $objPHPExcel->getActiveSheet()->SetCellValue('G' . $rowCount$value['phone']);   
  27.                 $objPHPExcel->getActiveSheet()->SetCellValue('H' . $rowCount$value['address']);   
  28.                 $objPHPExcel->getActiveSheet()->SetCellValue('I' . $rowCount$value['title']);   
  29.                 $objPHPExcel->getActiveSheet()->SetCellValue('J' . $rowCount$value['intro']);   
  30.                 $rowCount++;   
  31.             }   
  32.             $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);   
  33.             $objWriter->save($base_url.'assets/excel/'.$fileName);   
  34.             // download file   
  35.             header("Content-Type: application/vnd.ms-excel");   
  36.             redirect($base_url.$fileName);   
  37.   
  38.         }  

參考資料來源: Export Data to Excel using Codeigniter

留言

熱門文章