Bueno la herramienta se llama PHPExcel y permite realizar reportes tanto en formato excel como en pdf. Es muy simple ya que lo podemos adaptar simplemente por ser un un conjuntos de clases.
Necesita algunos requisitos que deberan estar activados en PHP para que el componente funcione:
- PHP version 5.2.0 en adelante
- PHP extension php_zip (necesaria para manipular archivos en formato de Excel 2007)
- PHP extension php_xml
- PHP extension php_gd2
Pasos Para Elaborar Reporte En Excel:
- Se debe de descomprimir y copiar en una carpeta en la aplicacion que se este desarrollando, es recomendable crear una carpeta dentro de la aplicacion unicamente para las clases de PHPExcel.
- A continuacion el archivo php que lo coloque en un directorio distinto al de PHPExcel dentro de la aplicacion que al momento de ejecutarlo este crea el archivo excel dentro del directorio que se le asigno. A como pueden ver unicamente importamos el archivo PHPExcel y el componente para manipular archivos de Excel 2007. El script php que les muestro toma los datos de mysql para crear una hoja de calculo con estos. Ademas se utilizan colores de fondo para diferenciar el header de la hoja.
<?php
/** Error reporting */
error_reporting(E_ALL);
/** Include path **/
ini_set('include_path', ini_get('include_path').';../Classes/');
/** PHPExcel */
include '../excel/PHPExcel.php';
/** PHPExcel_Writer_Excel2007 */
include '../excel/PHPExcel/Writer/Excel2007.php';
// Create new PHPExcel object
echo date('H:i:s') . " Create new PHPExcel object\n";
$objPHPExcel = new PHPExcel();
// Set properties
echo date('H:i:s') . " Set properties\n";
$objPHPExcel->getProperties()->setCreator("E-Tracking");
$objPHPExcel->getProperties()->setLastModifiedBy("E-Tracking");
$objPHPExcel->getProperties()->setTitle("Reporte De Tarifas Por Categoria");
$objPHPExcel->getProperties()->setSubject("Reporte E-Tracking");
$objPHPExcel->getProperties()->setDescription("Reporte Generado Por Sistema E-Tracking");
// Add some data
echo date('H:i:s') . " Add some data\n";
$objPHPExcel->setActiveSheetIndex(0);
$objPHPExcel->getActiveSheet()->SetCellValue('A1', 'REPORTE DE TARIFAS DE ' . $_GET["ident"]);
$objPHPExcel->getActiveSheet()->SetCellValue('F1', 'FECHA DE REPORTE:');
$objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(20);
$objPHPExcel->getActiveSheet()->SetCellValue('G1', date("d-m-Y"));
$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(30);
$objPHPExcel->getActiveSheet()->SetCellValue('C3','CATEGORIA' );
$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(25);
$objPHPExcel->getActiveSheet()->SetCellValue('D3', 'TARIFA POR KILOGRAMO');
$objPHPExcel->getActiveSheet()->getStyle('C3')->getFont()->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('D3')->getFont()->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('C3')->getFont()->setColor(new PHPExcel_Style_Color( PHPExcel_Style_Color::COLOR_WHITE ) );
$objPHPExcel->getActiveSheet()->getStyle('D3')->getFont()->setColor(new PHPExcel_Style_Color( PHPExcel_Style_Color::COLOR_WHITE ) );
$objPHPExcel->getActiveSheet()->getStyle('C3')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
$objPHPExcel->getActiveSheet()->getStyle('C3')->getFill()->getStartColor()->setARGB(PHPExcel_Style_Color::COLOR_DARKGREEN);
$objPHPExcel->getActiveSheet()->getStyle('D3')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
$objPHPExcel->getActiveSheet()->getStyle('D3')->getFill()->getStartColor()->setARGB(PHPExcel_Style_Color::COLOR_DARKGREEN);
include("../Conexion.php");
$conexion = new Conexion();
$c = $conexion->conectar();
$consulta = "SELECT UPPER(categorias_articulos.categoria), tarifas.tarifa FROM tarifas " .
"INNER JOIN categorias_articulos ON categorias_articulos.idcategorias_articulos = tarifas.idcategorias_articulos" .
" WHERE tarifas.flag = '0' AND tarifas.centros_acopio_idcentro_acopio = " . $_GET["id_ident"];
$resultado_consulta = mysql_query($consulta);
$i = 5;
while ($registro = mysql_fetch_array($resultado_consulta))
{
$objPHPExcel->getActiveSheet()->SetCellValue('C' . $i, $registro[0]);
$objPHPExcel->getActiveSheet()->SetCellValue('D' . $i, $registro[1] . ' colones');
$i++;
}
// Rename sheet
echo date('H:i:s') . " Rename sheet\n";
$objPHPExcel->getActiveSheet()->setTitle('REPORTE DE TARIFAS');
// Save Excel 2007 file
echo date('H:i:s') . " Write to Excel2007 format\n";
$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
// Aqui se crea en el directorio el archivo con la identificacion del
//Usuario que lo creo y con el nombre propio del archivo
$objWriter->save($_GET["usuario"] . "ReporteDeTarifas.xlsx");
// Echo done
echo date('H:i:s') . " Done writing file.\r\n";
?>
/** Error reporting */
error_reporting(E_ALL);
/** Include path **/
ini_set('include_path', ini_get('include_path').';../Classes/');
/** PHPExcel */
include '../excel/PHPExcel.php';
/** PHPExcel_Writer_Excel2007 */
include '../excel/PHPExcel/Writer/Excel2007.php';
// Create new PHPExcel object
echo date('H:i:s') . " Create new PHPExcel object\n";
$objPHPExcel = new PHPExcel();
// Set properties
echo date('H:i:s') . " Set properties\n";
$objPHPExcel->getProperties()->setCreator("E-Tracking");
$objPHPExcel->getProperties()->setLastModifiedBy("E-Tracking");
$objPHPExcel->getProperties()->setTitle("Reporte De Tarifas Por Categoria");
$objPHPExcel->getProperties()->setSubject("Reporte E-Tracking");
$objPHPExcel->getProperties()->setDescription("Reporte Generado Por Sistema E-Tracking");
// Add some data
echo date('H:i:s') . " Add some data\n";
$objPHPExcel->setActiveSheetIndex(0);
$objPHPExcel->getActiveSheet()->SetCellValue('A1', 'REPORTE DE TARIFAS DE ' . $_GET["ident"]);
$objPHPExcel->getActiveSheet()->SetCellValue('F1', 'FECHA DE REPORTE:');
$objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(20);
$objPHPExcel->getActiveSheet()->SetCellValue('G1', date("d-m-Y"));
$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(30);
$objPHPExcel->getActiveSheet()->SetCellValue('C3','CATEGORIA' );
$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(25);
$objPHPExcel->getActiveSheet()->SetCellValue('D3', 'TARIFA POR KILOGRAMO');
$objPHPExcel->getActiveSheet()->getStyle('C3')->getFont()->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('D3')->getFont()->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('C3')->getFont()->setColor(new PHPExcel_Style_Color( PHPExcel_Style_Color::COLOR_WHITE ) );
$objPHPExcel->getActiveSheet()->getStyle('D3')->getFont()->setColor(new PHPExcel_Style_Color( PHPExcel_Style_Color::COLOR_WHITE ) );
$objPHPExcel->getActiveSheet()->getStyle('C3')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
$objPHPExcel->getActiveSheet()->getStyle('C3')->getFill()->getStartColor()->setARGB(PHPExcel_Style_Color::COLOR_DARKGREEN);
$objPHPExcel->getActiveSheet()->getStyle('D3')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
$objPHPExcel->getActiveSheet()->getStyle('D3')->getFill()->getStartColor()->setARGB(PHPExcel_Style_Color::COLOR_DARKGREEN);
include("../Conexion.php");
$conexion = new Conexion();
$c = $conexion->conectar();
$consulta = "SELECT UPPER(categorias_articulos.categoria), tarifas.tarifa FROM tarifas " .
"INNER JOIN categorias_articulos ON categorias_articulos.idcategorias_articulos = tarifas.idcategorias_articulos" .
" WHERE tarifas.flag = '0' AND tarifas.centros_acopio_idcentro_acopio = " . $_GET["id_ident"];
$resultado_consulta = mysql_query($consulta);
$i = 5;
while ($registro = mysql_fetch_array($resultado_consulta))
{
$objPHPExcel->getActiveSheet()->SetCellValue('C' . $i, $registro[0]);
$objPHPExcel->getActiveSheet()->SetCellValue('D' . $i, $registro[1] . ' colones');
$i++;
}
// Rename sheet
echo date('H:i:s') . " Rename sheet\n";
$objPHPExcel->getActiveSheet()->setTitle('REPORTE DE TARIFAS');
// Save Excel 2007 file
echo date('H:i:s') . " Write to Excel2007 format\n";
$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
// Aqui se crea en el directorio el archivo con la identificacion del
//Usuario que lo creo y con el nombre propio del archivo
$objWriter->save($_GET["usuario"] . "ReporteDeTarifas.xlsx");
// Echo done
echo date('H:i:s') . " Done writing file.\r\n";
?>
Para Elaborar Un Reporte PDF
- Utilizar el paso 1 (descomprimir y copiar en la aplicacion) del ejemplo anterior.
- A continuacion les muestro el script que con los mismos datos del ejemplo anterior se crea un reporte en PDF, a diferencia del anterior este no crea el archivo, el servidor al procesar el script lo envia a la parte cliente(navegador) con cabecera http pdf con el que se puede descargar y observar:
<?php
/** Error reporting */
error_reporting(E_ALL);
/** Include path **/
ini_set('include_path', ini_get('include_path').';../Classes/');
/** PHPExcel */
include '../excel/PHPExcel.php';
/** PHPExcel_Writer_Excel2007 */
include '../excel/PHPExcel/Writer/Excel2007.php';
// Create new PHPExcel object
$objPHPExcel = new PHPExcel();
// Set properties
$objPHPExcel->getProperties()->setCreator("E-Tracking");
$objPHPExcel->getProperties()->setLastModifiedBy("E-Tracking");
$objPHPExcel->getProperties()->setTitle("Reporte De Tarifas Por Categoria");
$objPHPExcel->getProperties()->setSubject("Reporte E-Tracking");
$objPHPExcel->getProperties()->setDescription("Reporte Generado Por Sistema E-Tracking");
// Add some data
$objPHPExcel->setActiveSheetIndex(0);
$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(20);
$objPHPExcel->getActiveSheet()->SetCellValue('A1', 'REPORTE DE TARIFAS DE ' . $_GET["ident"]);
$objPHPExcel->getActiveSheet()->SetCellValue('F1', 'FECHA DE REPORTE:');
$objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(15);
$objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(20);
$objPHPExcel->getActiveSheet()->SetCellValue('G1', date("d-m-Y"));
$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(30);
$objPHPExcel->getActiveSheet()->SetCellValue('C3','CATEGORIA' );
$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(25);
$objPHPExcel->getActiveSheet()->SetCellValue('D3', 'TARIFA POR KILOGRAMO');
$objPHPExcel->getActiveSheet()->getStyle('C3')->getFont()->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('D3')->getFont()->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('C3')->getFont()->setColor(new PHPExcel_Style_Color( PHPExcel_Style_Color::COLOR_WHITE ) );
$objPHPExcel->getActiveSheet()->getStyle('D3')->getFont()->setColor(new PHPExcel_Style_Color( PHPExcel_Style_Color::COLOR_WHITE ) );
$objPHPExcel->getActiveSheet()->getStyle('C3')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
$objPHPExcel->getActiveSheet()->getStyle('C3')->getFill()->getStartColor()->setARGB(PHPExcel_Style_Color::COLOR_DARKGREEN);
$objPHPExcel->getActiveSheet()->getStyle('D3')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
$objPHPExcel->getActiveSheet()->getStyle('D3')->getFill()->getStartColor()->setARGB(PHPExcel_Style_Color::COLOR_DARKGREEN);
include("../Conexion.php");
$conexion = new Conexion();
$c = $conexion->conectar();
$consulta = "SELECT UPPER(categorias_articulos.categoria), tarifas.tarifa FROM tarifas " .
"INNER JOIN categorias_articulos ON categorias_articulos.idcategorias_articulos = tarifas.idcategorias_articulos" .
" WHERE tarifas.flag = '0' AND tarifas.centros_acopio_idcentro_acopio = " . $_GET["id_ident"];
$resultado_consulta = mysql_query($consulta);
$i = 5;
while ($registro = mysql_fetch_array($resultado_consulta))
{
$objPHPExcel->getActiveSheet()->SetCellValue('C' . $i, $registro[0]);
$objPHPExcel->getActiveSheet()->SetCellValue('D' . $i, $registro[1] . ' colones');
$i++;
}
// Rename sheet
$objPHPExcel->getActiveSheet()->setTitle('REPORTE DE TARIFAS');
// Save Excel 2007 file
// Redirect output to a client’s web browser (Excel2007)
header('Content-Type: application/pdf');
header('Content-Disposition: attachment;filename= "' . $_GET["usuario"] . 'ReporteDeTarifas.pdf"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'PDF');
$objWriter->save('php://output');
exit;
Saludos...
/** Error reporting */
error_reporting(E_ALL);
/** Include path **/
ini_set('include_path', ini_get('include_path').';../Classes/');
/** PHPExcel */
include '../excel/PHPExcel.php';
/** PHPExcel_Writer_Excel2007 */
include '../excel/PHPExcel/Writer/Excel2007.php';
// Create new PHPExcel object
$objPHPExcel = new PHPExcel();
// Set properties
$objPHPExcel->getProperties()->setCreator("E-Tracking");
$objPHPExcel->getProperties()->setLastModifiedBy("E-Tracking");
$objPHPExcel->getProperties()->setTitle("Reporte De Tarifas Por Categoria");
$objPHPExcel->getProperties()->setSubject("Reporte E-Tracking");
$objPHPExcel->getProperties()->setDescription("Reporte Generado Por Sistema E-Tracking");
// Add some data
$objPHPExcel->setActiveSheetIndex(0);
$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(20);
$objPHPExcel->getActiveSheet()->SetCellValue('A1', 'REPORTE DE TARIFAS DE ' . $_GET["ident"]);
$objPHPExcel->getActiveSheet()->SetCellValue('F1', 'FECHA DE REPORTE:');
$objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(15);
$objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(20);
$objPHPExcel->getActiveSheet()->SetCellValue('G1', date("d-m-Y"));
$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(30);
$objPHPExcel->getActiveSheet()->SetCellValue('C3','CATEGORIA' );
$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(25);
$objPHPExcel->getActiveSheet()->SetCellValue('D3', 'TARIFA POR KILOGRAMO');
$objPHPExcel->getActiveSheet()->getStyle('C3')->getFont()->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('D3')->getFont()->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('C3')->getFont()->setColor(new PHPExcel_Style_Color( PHPExcel_Style_Color::COLOR_WHITE ) );
$objPHPExcel->getActiveSheet()->getStyle('D3')->getFont()->setColor(new PHPExcel_Style_Color( PHPExcel_Style_Color::COLOR_WHITE ) );
$objPHPExcel->getActiveSheet()->getStyle('C3')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
$objPHPExcel->getActiveSheet()->getStyle('C3')->getFill()->getStartColor()->setARGB(PHPExcel_Style_Color::COLOR_DARKGREEN);
$objPHPExcel->getActiveSheet()->getStyle('D3')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
$objPHPExcel->getActiveSheet()->getStyle('D3')->getFill()->getStartColor()->setARGB(PHPExcel_Style_Color::COLOR_DARKGREEN);
include("../Conexion.php");
$conexion = new Conexion();
$c = $conexion->conectar();
$consulta = "SELECT UPPER(categorias_articulos.categoria), tarifas.tarifa FROM tarifas " .
"INNER JOIN categorias_articulos ON categorias_articulos.idcategorias_articulos = tarifas.idcategorias_articulos" .
" WHERE tarifas.flag = '0' AND tarifas.centros_acopio_idcentro_acopio = " . $_GET["id_ident"];
$resultado_consulta = mysql_query($consulta);
$i = 5;
while ($registro = mysql_fetch_array($resultado_consulta))
{
$objPHPExcel->getActiveSheet()->SetCellValue('C' . $i, $registro[0]);
$objPHPExcel->getActiveSheet()->SetCellValue('D' . $i, $registro[1] . ' colones');
$i++;
}
// Rename sheet
$objPHPExcel->getActiveSheet()->setTitle('REPORTE DE TARIFAS');
// Save Excel 2007 file
// Redirect output to a client’s web browser (Excel2007)
header('Content-Type: application/pdf');
header('Content-Disposition: attachment;filename= "' . $_GET["usuario"] . 'ReporteDeTarifas.pdf"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'PDF');
$objWriter->save('php://output');
exit;
Saludos...
0 comentarios:
Publicar un comentario en la entrada