Foros del Web » Programando para Internet » PHP »

generar archivo excel mediante tabla php

Estas en el tema de generar archivo excel mediante tabla php en el foro de PHP en Foros del Web. Hola!! Como generar un pdf me daba muchos problemas, he optado por generar un excel a partir de una tabla que creo con php obteniendo ...
  #1 (permalink)  
Antiguo 09/06/2011, 00:30
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
generar archivo excel mediante tabla php

Hola!!
Como generar un pdf me daba muchos problemas, he optado por generar un excel a partir de una tabla que creo con php obteniendo los datos que necesito de la base de datos y realizando cálculos.

A ver, en mi sitio existe un botón que llama a un filtro para generar estadísticas. Después de haber filtrado los datos, y a partir de calcular los resultados, muestro la tabla o tablas generada/s en pantalla. Una vez es mostrada la información tengo la opción de exportal a excel(cada tabla por separado, o puedo hacerlas todas a la vez?).
Qué librería me aconsejais para realizar ésto?

Trabajo con php y xajax. Cuando pulso el botón de generar excel(que no es un formulario) llamo a una función javascript que recoge el html generado, lo inserta en un campo hidden y hace un submit.

Código PHP:
<input type='image' src='images/excel.gif' id='gexcel' name='gexcel' value='' onclick='javascript:recogeHtml();'/> 
Código Javascript:
Ver original
  1. function recogeHtml()
  2. {
  3.     var html = document.getElementById('zonas').innerHTML;
  4.     //alert(html);
  5.     document.getElementById('htmlgenerado').value = html;
  6.     document.formulario.submit();
  7.    
  8. };

Luego en php miro si $_POST[campo] está inicializado y si es así llamo a la función de impresión(que no es xajax).

Código PHP:

if(isset($_POST['htmlgenerado']))
{
    
$html $_POST['htmlgenerado'];
    
imprimeExcel($html);

Estaba probando con excelwriter, pero creo que no me va a servir. Voy a seguir buscando otras opciones mientras tanto.

Gracias!!
  #2 (permalink)  
Antiguo 09/06/2011, 05:34
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: generar archivo excel mediante tabla php

Al final he encontrado una media-solucion.
Sigo haciendo el mismo proceso; con javascript se insertan los datos a imprimir en un campo hidden y se hace un submit del formulario.
Luego la variable la recojo de la siguiente forma:
Código PHP:
<?
if(isset($_POST['htmlgenerado']))
{
    
$excel=$_POST['htmlgenerado'];
    
    
header("Content-type: application/vnd.ms-excel");
    
header("Content-disposition: attachment; filename=Estadisticas.xls");
    
    print 
$excel;
    exit;        
}
?>
Y todo parece ir perfecto, me lo imprime bien y todo pero me muestra un mensaje diciéndome que el archivo que quiero abrir tiene un formato distinto al especificado por la extensión del archivo.



Alguien sabe por qué es eso??

Gracias!
  #3 (permalink)  
Antiguo 09/06/2011, 06:10
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: generar archivo excel mediante tabla php

Porque un archivo xls es un binario que se tiene que cumplir con ciertos patrones y tu lo que más probable haces es crear una estructura HTML y lo pasas a excel. Trata PHPExcel para crear el archivo.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #4 (permalink)  
Antiguo 09/06/2011, 06:17
Avatar de aniMAYtions  
Fecha de Ingreso: diciembre-2007
Ubicación: Granada
Mensajes: 519
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: generar archivo excel mediante tabla php

Gracias por tu respuesta abimaelrc.
Por ahora me han dicho en la empresa que no pasa nada. Pero en breve estudiaré lo que me has dicho y si hay tiempo lo cambiaré.

Etiquetas: excel, mediante, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:29.