Crear archivos excel, word y pdf en codeigniter

Stay hungry, stay foolish

Steve Jobs

Requisitos:

  • Tener instalado composer que es el gestor de paquetes de php con el cual instalaremos las librerias para crear los paquetes.
  • Descargar codeigniter

Primero descargamos y configuramos codeigniter, para poder usar las librerías debemos configurar el vendor en codeigniter entrando al archivo config.php linea 139 agregamos las siguientes lineas.

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

Después mediante consola nos ubicamos en nuestra carpeta donde esta codeigniter instalado, para mi ejemplo esta en C:\xampp\htdocs\reporte

Instalaremos PhpSpreadsheet que es la librería que genera los archivos excel.

composer require phpoffice/phpspreadsheet

Instalaremos Phpword que es la librería que genera los archivos word.

composer require phpoffice/phpword

Instalaremos fpdf que es la librería que genera los archivos pdf.

composer require setasign/fpdf:1.8.1

Al final tendremos una carpeta llamada vendor con todas las librerías instaladas.
Luego creamos el controlador de Reporte.php

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

class Reporte extends CI_Controller {


	public function index()
	{
		$this->load->view('reporte');
	}

	public function pdf(){
		$pdf = new FPDF();
		$pdf->AddPage();
		$pdf->SetFont('Arial','B',16);
		$pdf->Cell(40,10,'¡Hola, Mundo!');
		$pdf->Output();
	}

	public function excel(){

		$spreadsheet = new Spreadsheet();
		$sheet = $spreadsheet->getActiveSheet();
		$sheet->setCellValue('A1', 'Hello World !');

		$writer = new Xlsx($spreadsheet);
		$writer->save('hello world.xlsx');
		
	}

	public function word(){

		$phpWord = new \PhpOffice\PhpWord\PhpWord();


		$section = $phpWord->addSection();

		$section->addText(
			'"Learn from yesterday, live for today, hope for tomorrow. '
			. 'The important thing is not to stop questioning." '
			. '(Albert Einstein)'
		);


		$section->addText(
			'"Great achievement is usually born of great sacrifice, '
			. 'and is never the result of selfishness." '
			. '(Napoleon Hill)',
			array('name' => 'Tahoma', 'size' => 10)
		);


		$fontStyleName = 'oneUserDefinedStyle';
		$phpWord->addFontStyle(
			$fontStyleName,
			array('name' => 'Tahoma', 'size' => 10, 'color' => '1B2232', 'bold' => true)
		);
		$section->addText(
			'"The greatest accomplishment is not in never falling, '
			. 'but in rising again after you fall." '
			. '(Vince Lombardi)',
			$fontStyleName
		);


		$fontStyle = new \PhpOffice\PhpWord\Style\Font();
		$fontStyle->setBold(true);
		$fontStyle->setName('Tahoma');
		$fontStyle->setSize(13);
		$myTextElement = $section->addText('"Believe you can and you\'re halfway there." (Theodor Roosevelt)');
		$myTextElement->setFontStyle($fontStyle);

		$objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'Word2007');
		$objWriter->save('helloWorld.docx');
	}
}

Al ejecutar cada ruta, los archivos se van a crear en la carpeta del servidor, si quieres que se descarguen utiliza la configuración de salida de cada una de las librerías.