خواندن فایل اکسل در PHP - یکپارچه سازی و بارگزاری PHPExcel درون Codeigniter

خواندن فایل اکسل در PHP - یکپارچه سازی و بارگزاری PHPExcel درون Codeigniter

بسته PHPExcel مجموعه ای از کلاس ها/کتابخانه برای خواندن و نوشتن فایل های اکسل است (XLS/XLSX). طیق گفته صفحه Wiki کدایگنایتر یکپارچه سازی و استفاده از PHPExcel در چارچوب کدایگنایتر نیاز به مقداری اصلاحات در کد منبع PHPExcel دارد. با چند گام که من به شما خواهم گفت، شما نیازی به ویرایش کد منبع PHPExcel نخواهید داشت و استفاده خیلی راحت خواهد بود.

پیش نیاز: من این کار را روی کدایگنایتر 3 و PHPEXcel 1.8 تست کردم.

شروع کنیم:
۱. بسته PHPExcel‌ را از https://github.com/PHPOffice/PHPExcel دانلود کنید.
۲. فایل فشرده را از حالت فشرده خارج کنید و به درون پوشه application/third_party/ کپی کنید. پوشه application/third_party/ شما باید به شکل زیر باشد:

۳. یک فایل PHP جدید درون application/libraries/ ایجاد کنید و نام آن را Excel.php بگذارید. سپس کد زیر را درون آن کپی کنید:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/* 
 *  ======================================= 
 *  Author     : Bahman Shafiei
 *  License    : Protected 
 *  Email      : [email protected]
 *   
  
 *  ======================================= 
 */
require_once APPPATH."/third_party/PHPExcel.php";

class Excel extends PHPExcel {
    public function __construct() {
        parent::__construct();
    }
}


۴. حالا شما می توانید از کتابخانه PHPExcel درون کد کنترلرهای کدایگنایتر استفاده کنید.
نمونه کدی از نحوه استفاده:

//load our new PHPExcel library
        $this->load->library('excel');
//activate worksheet number 1
        $this->excel->setActiveSheetIndex(0);
//name the worksheet
        $this->excel->getActiveSheet()->setTitle('test worksheet');
//set cell A1 content with some text
        $this->excel->getActiveSheet()->setCellValue('A1', 'This is just some text value');
//change the font size
        $this->excel->getActiveSheet()->getStyle('A1')->getFont()->setSize(20);
//make the font become bold
        $this->excel->getActiveSheet()->getStyle('A1')->getFont()->setBold(true);
//merge cell A1 until D1
        $this->excel->getActiveSheet()->mergeCells('A1:D1');
//set aligment to center for that merged cell (A1 to D1)
        $this->excel->getActiveSheet()->getStyle('A1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);

        $filename='just_some_random_name.xls'; //save our workbook as this file name
        header('Content-Type: application/vnd.ms-excel'); //mime type
        header('Content-Disposition: attachment;filename="'.$filename.'"'); //tell browser what's the file name
        header('Cache-Control: max-age=0'); //no cache

//save it to Excel5 format (excel 2003 .XLS file), change this to 'Excel2007' (and adjust the filename extension, also the header mime type)
//if you want to save it as .XLSX Excel 2007 format
        $objWriter = PHPExcel_IOFactory::createWriter($this->excel, 'Excel5');
//force user to download the Excel file without writing it to server's HD
        $objWriter->save('php://output');