Integrando o Framework Codeigniter 3 com o PhpSpreadSheet via composer


Olá pessoal, nesse post eu trago para vocês o passo a passo de como integrar o Codeigniter 3 com o PhpSpreadSheet via Composer de uma forma bem simples.




Como pré requisitos precisamos de:

  • Baixar o codeigniter 3: https://codeigniter.com/download
  • Ter xampp instalado e startado: https://www.apachefriends.org/index.html
  • Ter o composer instalado: https://getcomposer.org/download/
  • Ter um editor de código: https://code.visualstudio.com/

Antes de continuar precisamos verificar se no arquivo php.ini do php, as variáveis que o PhpSpreadSheet usa estão descomentadas caso contrário não irá funcionar.

Para isso basta você ir no arquivo php.ini e procurar pelas extensões a seguir e descomentar elas caso esteja comentado.

extension=fileinfo
extension=gd

Assim que fizer o passo anterior, já pode extrair a pasta do codeigniter3 e renomear para ci-3

colocar a pasta do codeigniter3 (ci-3) na pasta htdocs do xampp e abrir a pasta no seu editor de código preferido assim usarei o vscode como exemplo.

Agora abra o terminal do vscode para usar o comando do composer para baixar o phpspreedsheet usando o comando:

                                                composer require phpoffice/phpspreadsheet

Após realizar o download via composer da biblioteca precisamos setar o caminho da pasta vendor/autoload.php no arquivo config.php do codeigniter para que ele consiga usar no projeto todo, para isso vá até a pasta application/config/config.php para editar a linha que tenha o parâmetro composer_autoload como no exemplo abaixo.


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


Aproveitando que estamos no arquivo config.php, vamos realizar uma configuração inicial do codeigniter, então edite os parametros a seguir:


$config['index_page'] = '';

$config['base_url'] = 'http://localhost/ci-3/';


Agora vamos até o arquivo routes.php que fica dentro da pasta config/routes.php, e edite o conteúdo da variável default_controller para como está no exemplo, assim a chamada padrão do codeigniter chamará a função de gerar excel automaticamente.


$route['default_controller'] = 'welcome/gerarExcel';


Já no autoload.php dentro da pasta config do codeigniter setar o conteúdo da variável helper como no exemplo a seguir.


$autoload['helper'] = array('url');


Agora podemos ir para o controller welcome dentro da pasta controllers para poder gerar o código que vai nos permitir criar um arquivo excel;

No inicio do documento depois do parametro define, coloque os dois uses a seguir:


use PhpOffice\PhpSpreadsheet\Spreadsheet;

use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

Dentro da classe welcome crie a função gerarExcel como a seguir:


public function gerarExcel(){

    $spreadsheet = new Spreadsheet();

    $fileName = "matheus_code.xlsx";

    $sheet = $spreadsheet->getActiveSheet();

    $sheet->setCellValue('A1', 'Hello World !');


    $writer = new Xlsx($spreadsheet);

    $writer->save(
$fileName);

    header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');

    header('Content-Disposition: attachment; filename="'. urlencode(
$fileName).'"');

    $writer->save('php://output');

}


Pronto, agora você consegue utilizar a documentação do phpspreadsheet para gerar os arquivos excel do jeito que preferir!

Segue o código completo do controller:

<?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()

{

$this->load->view('welcome_message');

}

public function gerarExcel(){

$spreadsheet = new Spreadsheet();

$fileName = 'matheus_code.xlsx';

$sheet = $spreadsheet->getActiveSheet();

$sheet->setCellValue('A1', 'Hello World!');

$writer = new Xlsx($spreadsheet);

$writer->save($fileName);

header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');

header('Content-Disposition: attachment; filename="' . urlencode($fileName) . '"');

$writer->save('php://output');

}

}

Comentários

Postagens mais visitadas deste blog

Integrando o Framework Codeigniter 3 com o PHPUnit via composer

Comandos/atalhos úteis no Visual Studio Code (VsCode)

Integrando o XDebug com o PHPUnit