CodeIgniter กับการเรียกใช้งาน PHPExcel ในโปรแกรม PHP CI MANIA

โดย SONGCHAI SAETERN
การส่งข้อมูลออกเป็นไฟล์ Excel



1. สร้างไฟล์ Excel.php ไว้ที่ application/libraries/ ซึ่งจะเรียกไลบรารี่ที่เราดาวน์โหลดเก็บไว้ใน application/third_party มาใช้อีกทีหนึ่ง (ดาวน์โหลดไลบรารี่ที่เกี่ยวข้องได้ที่ https://github.com/sunzandesign/PHP_CI_MANIA_Libraries)

<?php
if (!defined('BASEPATH')) {
    exit('No direct script access allowed');
}
require_once APPPATH."/third_party/PHPExcel.php";
class Excel extends PHPExcel{

    public function __construct(){
        parent::__construct();
    }
}


2. ในส่วนของ Controller ให้โหลดไลบรารี่ที่สร้างไว้มาใช้งาน


    public function export_excel()
{
        // load excel library
        $this->load->library('Excel');
$results = $this->Student->read(0, 1000);//1000 คือจำนวนข้อมูลที่ต้องการสูงสุด
$data_lists = $this->setDataListFormat($results['list_data'], 0);
        $objPHPExcel = new PHPExcel();
        $objPHPExcel->setActiveSheetIndex(0);
     
   // set Header
$objPHPExcel->getActiveSheet()->SetCellValue('A1', 'รหัสประจำตัว');
        $objPHPExcel->getActiveSheet()->SetCellValue('B1', 'ชื่อ-นามสกุล');
        $objPHPExcel->getActiveSheet()->SetCellValue('C1', 'เพศ');
// set header bold
$objPHPExcel->getActiveSheet()->getStyle("A1:C1")->getFont()->setBold( true );
        // set Row
        $rowCount = 2;
        foreach ($data_lists as $row) {
$objPHPExcel->getActiveSheet()
->setCellValueExplicit('A' . $rowCount, $row['student_code'], PHPExcel_Cell_DataType::TYPE_STRING);
$objPHPExcel->getActiveSheet()->SetCellValue('B' . $rowCount, $row['preview_prefix_name'].$row['firstname'].' '.$row['lastname']);
            $objPHPExcel->getActiveSheet()->SetCellValue('C' . $rowCount, $row['preview_sex']);
            $rowCount++;
        }
// auto size
foreach(range('A','C') as $columnID) {
$objPHPExcel->getActiveSheet()->getColumnDimension($columnID)
->setAutoSize(true);
}
        $filename = "student_". date("Y-m-d-H-i-s").".xlsx";
        header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
        header('Content-Disposition: attachment;filename="'.$filename.'"');
        header('Cache-Control: max-age=0');
        $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
        $objWriter->save('php://output');
    }


3. สร้างลิงค์เพื่อเรียกไปยังหน้า Controller ที่เตรียมไว้สำหรับ Export ข้อมูลเป็นไฟล์ Excel ในที่นี้จะสร้างไปที่หน้าค้นหาและแสดงรายการ list_view.php

<div class="col-sm-12 col-md-12">
<div class="pull-right text-right">
<a href="{page_url}/print_pdf" target="_blank" class="btn btn-danger btn-lg" data-toggle="tooltip" title="พิมพ์ข้อมูล">
<i class="fas fa-file-excel"></i></span> PDF
</a>
<a href="{page_url}/export_excel" class="btn btn-success btn-lg" data-toggle="tooltip" title="ส่งออกข้อมูล">
<i class="fas fa-file-excel"></i></span> Excel
</a>
</div>
</div>


4. เมื่อคลิกปุ่ม Excel ก็จะเปิดไปที่หน้า Controller ที่เตรียมไว้ และเมื่อทำงานปกติก็จะมีป๊อบอัพดาวน์โหลดไฟล์แสดงขึ้นมา


5. เมื่อดาวน์โหลด/เปิดไฟล์ขึ้นมา จะพบข้อมูลตามที่กำหนดไว้ใน Controller








PHP CI MANIA - PHP Code Generator 

โปรแกรมช่วยสร้างโค้ด "ลดเวลาการเขียนโปรแกรม"
 http://fastcoding.phpcodemania.com/index.php/#purchase-order
สนใจสั่งซื้อราคาสุดคุ้ม 1,500 บาท
http://fastcoding.phpcodemania.com