php-excel una ligera alternatva para PHPExcel

PHP


Como sabemos PHPExcel es una potente libreria para importar y exportar hojas de calculo, que apesar de ser muy lenta, es la unica que soporta OpenDocumentXML o los formatos xlsx, docx, etc.
PHPExcel se ve torturado cuando le pedimos que maneje o exporte una gran cantidad de información en varios worksheets.

Navegando por la web encontre varias alterativas, pero después de trabajar con este paquetazo no me sentia conforme con ninguna de las sugeridas.

A pesar de todo no me rendi y pude encontrar a php-excel. Un paquete basado en Spreadsheet_Excel_Writer de PEAR, solo maneja el formato xls y únicamente sirve para exportar.

Ahora para crear una simple hoja de calculo con pocos datos veamos como se vería nuestro código usando PHPExcel:


$excel = new PHPExcel();

//Usamos el worsheet por defecto
$sheet = $excel->getActiveSheet();

//Agregamos un texto a la celda A1
$sheet->setCellValue('A1', 'Prueba');
//Damos formato o estilo a nuestra celda
$sheet->getStyle('A1')->getFont()->setName('Tahoma')->setBold(true)->setSize(8);
$sheet->getStyle('A1')->getBorders()->applyFromArray(array('allBorders' => 'thin'));
$sheet->getStyle('A1')->getAlignment()->setVertical('center')->setHorizontal('center');

$sheet->setCellValue('B1', 'PHPExcel');
//usamos los mismos estilos de A1
$sheet->getStyle('B1')->getFont()->setName('Tahoma')->setBold(true)->setSize(8);
$sheet->getStyle('B1')->getBorders()->applyFromArray(array('allBorders' => 'thin'));
$sheet->getStyle('B1')->getAlignment()->setVertical('center')->setHorizontal('center');

//exportamos nuestro documento
$writer = new PHPExcel_Writer_Excel5($excel);
$writer->save('prueba.xls');

$xls = new Excel_Writer_Workbook('prueba.xls');
Y como se vería usando nuestro paquete en cuestión:


$xls = new Excel_Writer_Workbook('prueba.xls');

//creamos nuestro estilo para títulos
$h1 = $xls->addFormat();
$h1->setBold();
$h1->setSize(8);
$h1->setFontFamily('Tahoma');
$h1->setBorder(1);
$h1->setAlign('center');

//creamos nuestro worksheet
$sheet = $xls->addWorksheet('Worksheet 1');

//Agregamos textos en A1 y B1 con el estilo ya definido en $h1
$sheet->write(0, 0, 'Prueba', $h1);
$sheet->write(0, 1, 'php-excel', $h1);

//exportamos nuestro documento
$xls->close();

Usando php-excel a largo plazo podríamos ahorrarnos muchas lineas de código.

Es importante tener en cuenta que el código de PHPExcel podríamos optimizarlo un poco, pero estas optimizaciones obviamente aumentaran el tiempo de renderización y ejecución.

Veamos nuestro código PHPExcel optimizado (La ejecución tardo 0.25463199615479 micro-segundos):


$excel = new PHPExcel();

//Usamos el worsheet por defecto
$sheet = $excel->getActiveSheet();

//creamos nuestro array con los estilos para titulos
$h1 = array(
 'font' => array('bold' => true, 'size' => 8, 'name' => 'Tahoma'),
 'borders' => array('allborders' => array('style' => 'thin')),
 'alignment' => array('vertical' => 'center', 'horizontal' => 'center')
);

//Agregamos texto en las celdas
$sheet->setCellValue('A1', 'Prueba');
$sheet->setCellValue('B1', 'MatrixDevelopments');

//Damos formato o estilo a nuestras celdas
$sheet->getStyle('A1:B1')->applyFromArray($h1);

//exportamos nuestro documento
$writer = new PHPExcel_Writer_Excel5($excel);
$writer->save('prueba1.xls');
Ahora veamos nuestro codigo php-excel optimizado (La ejecución tardo 0.08405590057373 micro-segundos):


$xls = new Excel_Writer_Workbook('prueba.xls');

//creamos nuestro estilo para titulos
$h1 = $xls->addFormat(array('bold' => 1, 'size' => 8, 'fontFamily' => 'Tahoma', 'border' => 1, 'align' => 'center'));

//creamos nuestro worksheet
$sheet = $xls->addWorksheet('Worksheet 1');

//Agregamos textos en A1 y B1 con el estilo ya definido en $h1
$sheet->write(0, 0, 'Prueba', $h1);
$sheet->write(0, 1, 'MatrixDevelopments', $h1);

//exportamos nuestro documento
$xls->close();
Después de hacer estas pequeñas pruebas, pude comprobar/verificar que php-excel es mas eficiente que PHPExcel.

Todo esto es decisión de cada uno, ustedes deciden con que librería/paquete van trabajar. Cumplí mi parte al compartir este pequeño conocimiento, espero que les sea de utilidad y si les gusto no olviden dejar su comentario y compartan con todo el mundo....!!

ENLACES:
Spreadsheet_Excel_Writer | PEAR
php-excel | Repositorio en GitHub
PHPExcel | Web Oficial
PHPExcel | Repositorio en GitHub

1 comentario: