How to generate Excel using PhpSpreadsheet in CodeIgniter

How to generate Excel using PhpSpreadsheet in CodeIgniter

In this post, I would like to show using of PhpSpreadsheet library within your CodeIgniter 3 project. PhpSpreadsheet is a pure PHP library for reading and writing spreadsheet files.

Here are the steps to generate Excel in the CodeIgniter 3 application with PhpSpreadsheet:

Step 1: Download and install CodeIgniter.

Step 2: Run below composer command to download phpspreadsheet library from your project folder. It will create a new folder called “vendor” and it will download phpoffice/phpspreadsheet library into it.

$ composer require phpoffice/phpspreadsheet

Here is my the directory structure after installing phpoffice/phpspreadsheet


Step 3: Open application/config/config.php file and set you vendor directory path

$config['composer_autoload'] = 'vendor/autoload.php';

Step 4: Use phpspreadsheet library inside in your controller, here is the sample:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
 
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
 
class Welcome extends CI_Controller {
    
    public function index()
    {      
        $spreadsheet = new Spreadsheet();
        $sheet = $spreadsheet->getActiveSheet();
        $sheet->setCellValue('A1', 'Hello World !');
        
        $writer = new Xlsx($spreadsheet);
 
        $filename = 'name-of-the-generated-file.xlsx';
 
        $writer->save($filename); // will create and save the file in the root of the project
 
    }
 
    public function download()
    {
        $spreadsheet = new Spreadsheet();
        $sheet = $spreadsheet->getActiveSheet();
        $sheet->setCellValue('A1', 'Hello World !');
        
        $writer = new Xlsx($spreadsheet);
 
        $filename = 'name-of-the-generated-file';
 
        header('Content-Type: application/vnd.ms-excel');
        header('Content-Disposition: attachment;filename="'. $filename .'.xlsx"');
        header('Cache-Control: max-age=0');
        

Share This Blog

Comment

Do you want to get our quality service for your business?