Hola Comunidad!
Es mi primer posteo... espero que de muchos. Y no para pedir ayuda si no también ayudar!
Estoy intentando lo siguiente. Quiero simplificar los reportes que obtienen proveedores de mi empresa para que puedan hacerlo directamente.
Armé un login con permisos, para que al loguearte te habilite los reportes que puedes necesitar. Ellos los necesitan en Excel.
Una vez logueado el usuario, y seleccionados los filtros necesarios para el reporte, estos viajan vía GET con un Ajax para consultar a la base de datos. Ejecuto un PHP que arma un excel con esas variables recibidas.
Si ejectuto el php solo, me abre el excel obviamente vacío al no recibir las variables...
Pero si ejecuto el botón exportar, con el firebug veo que se ejecuta bien pero fallo en el success del ajax... y no se abre el excel y nada pasa. Pero si veo la consola del firebug aparecen miles de caracteres raros...
supongo que en lo que fallo es en enviar en el success del ajax toda esa información a una ventana nueva para que tome los headers correctamente e interprete que se trata de un excel...
van los códigos..
JQUERY
function armar_informe_proveedor() {
procesando_emergente();
var desde = $("#periodo_desde").val();
var hasta = $("#periodo_hasta").val();
var id_sucursal = $("#id_depositos").val();
$.ajax({
url: "content/armar_informe_proveedor.php",
global: false,
type: "get",
data: ({
desde : desde,
hasta : hasta,
id_sucursal : id_sucursal
}),
dataType: "html",
success: function(transport){
$("#tabla").html(transport);
$("#form_procesando").hide();
}
});
}
EL PHP
el boton ejecutar
<div id=\"boton_buscar\">
<a href=\"#\" onclick=\"armar_informe_proveedor();\">
<img src=\"images/boton_buscar.gif\" />
</a>
</div>
El armado del excel
<?php
// Se modifican los encabezados del HTTP para indicar que se envia un archivo de Excel.
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="pruebaReal.xlsx"');
header('Cache-Control: max-age=0');
require_once ('../PHPExcel/Classes/PHPExcel.php');
error_reporting(E_ALL);
ini_set('display_errors', 1);
$objPHPExcel = new PHPExcel();
// Establecer propiedades
$objPHPExcel->getProperties()
->setCreator("Cattivo")
->setLastModifiedBy("Cattivo")
->setTitle("Documento Excel de Prueba")
->setSubject("Documento Excel de Prueba")
->setDescription("Demostracion sobre como crear archivos de Excel desde PHP.")
->setKeywords("Excel Office 2007 openxml php")
->setCategory("Pruebas de Excel");
$rsConn = conectar();
if(!session_id()) {
session_start();
}
set_time_limit(0);
// Agregar Informacion
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1', 'Valor 1')
->setCellValue('B1', 'Valor 2')
->setCellValue('C1', 'Total')
->setCellValue('A2', '10')
->setCellValue('C2', '=sum(A2:B2)');
// Renombrar Hoja
$objPHPExcel->getActiveSheet()->setTitle('Informe');
// Establecer la hoja activa, para que cuando se abra el documento se muestre primero.
$objPHPExcel->setActiveSheetIndex(0);
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('php://output');
exit();
?>
No está armada la consulta al MYSQL ya que si no logro armar este excel tan simple y mostrarlo luego de procesar el ajax.
Si ejecuto ese código así nomás, arma un excel y se abre bien.. Pero si lo hago a través del botón y el ajax no funciona.
Perdón si me extendí demasiado!
Saludos!