Foros del Web » Programando para Internet » PHP »

PHP Exportar a Excel

Estas en el tema de PHP Exportar a Excel en el foro de PHP en Foros del Web. Hola amigos saludos, tengo una consulta resulta que quiero exportar una tabla generada en PHP a Excel. uso esto para exportar al inicio del archivo ...
  #1 (permalink)  
Antiguo 09/09/2011, 11:32
 
Fecha de Ingreso: agosto-2011
Mensajes: 10
Antigüedad: 12 años, 6 meses
Puntos: 2
Pregunta PHP Exportar a Excel

Hola amigos saludos, tengo una consulta resulta que quiero exportar una tabla generada en PHP a Excel. uso esto para exportar al inicio del archivo .php:

<?php
header("Content-Type: application/vnd.ms-excel");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("content-disposition: attachment;filename=Reporte.xls");


Y me resulta, pero mi consulta es como lo puedo hacer que me lo exporte al hacer click desde un boton? Ojala me ayuden :)
  #2 (permalink)  
Antiguo 09/09/2011, 13: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: PHP Exportar a Excel

Eso es solamente hacer una consulta a la página que tiene el código. Ejemplo
Código PHP:
Ver original
  1. <input type="button" value="consulta" onclick="window.location = 'foo.php'" />
Con eso empieza a descargar el contenido. La forma como yo hago para cargar un excel es así
Código PHP:
Ver original
  1. header('Pragma: public');
  2. header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); // Date in the past    
  3. header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
  4. header('Cache-Control: no-store, no-cache, must-revalidate'); // HTTP/1.1
  5. header('Cache-Control: pre-check=0, post-check=0, max-age=0'); // HTTP/1.1
  6. header('Pragma: no-cache');
  7. header('Expires: 0');
  8. header('Content-Transfer-Encoding: none');
  9. header('Content-Type: application/vnd.ms-excel'); // This should work for IE & Opera
  10. header('Content-type: application/x-msexcel'); // This should work for the rest
  11. header('Content-Disposition: attachment; filename="nombre.xls"');
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 09/09/2011, 13:44
 
Fecha de Ingreso: agosto-2011
Mensajes: 10
Antigüedad: 12 años, 6 meses
Puntos: 2
Respuesta: PHP Exportar a Excel

Muchas gracias me ayudas bastante ya que puedo cargar un excel desde el boton, pero el problema ahora es que me genera un Excel vacío sin datos. Y en el archivo donde tengo ubicado el botón esta una tabla que se llena con datos a través de una consulta por PHP a una BD Acccess.

Mi duda ahora es como mostrar los datos de la tabla que me genera PHP con la consulta a la BD Access a traves del boton teniendo en otro archivo el contenido del "header" que me genera el archivo Excel? Se entiende?

He leído bastante pero no tengo buenos resultados :(
  #4 (permalink)  
Antiguo 09/09/2011, 14:17
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: PHP Exportar a Excel

Colocas por ejemplo todos los headers que te indiqué al principio del documento y todo lo que imprimas en pantalla debe guardarse en el excel. Es decir con hacer
Código PHP:
Ver original
  1. <?php
  2. header('Pragma: public');
  3. header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); // Date in the past    
  4. header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
  5. header('Cache-Control: no-store, no-cache, must-revalidate'); // HTTP/1.1
  6. header('Cache-Control: pre-check=0, post-check=0, max-age=0'); // HTTP/1.1
  7. header('Pragma: no-cache');
  8. header('Expires: 0');
  9. header('Content-Transfer-Encoding: none');
  10. header('Content-Type: application/vnd.ms-excel'); // This should work for IE & Opera
  11. header('Content-type: application/x-msexcel'); // This should work for the rest
  12. header('Content-Disposition: attachment; filename="nombre.xls"');
  13.  
  14. echo '<table xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40">
  15.    <tr>
  16.        <td>Foo</td>
  17.    </tr>
  18. </table>';
Eso debe crear un excel con una columna y esta debe tener Foo como valor.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 09/09/2011, 15:41
 
Fecha de Ingreso: agosto-2011
Mensajes: 10
Antigüedad: 12 años, 6 meses
Puntos: 2
Respuesta: PHP Exportar a Excel

Me resulta a la perfección lo que me indicas... pero me carga la información de inmediato y me descarga el Excel y lo que necesito es lo mismo pero que la opción de descargar el archivo Excel sea cuando hago click en el botón, no que me genere el XLS directo :( . Saludos
  #6 (permalink)  
Antiguo 09/09/2011, 18:33
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: PHP Exportar a Excel

Como te indique, creas un archivo y colocas el codigo para crear el xls, luego con el boton llamas ese archivo.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 13/09/2011, 13:11
 
Fecha de Ingreso: agosto-2011
Mensajes: 10
Antigüedad: 12 años, 6 meses
Puntos: 2
Respuesta: PHP Exportar a Excel

Gracias de todas maneras amigo, termine utilizando la librería JQuery Excel en javascript para la exportación, Saludos.
  #8 (permalink)  
Antiguo 24/11/2011, 16:03
 
Fecha de Ingreso: agosto-2010
Mensajes: 2
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: PHP Exportar a Excel

Estimados consulta el tema es que estoy ocupando este codigo para exportar mi html a xsl, y todo perfecto se genera el archivo lo descargo todo bien.


pero al momento de subir esto al servidor no me genera mas los xsl o mejor dicho los genera pero corruptos y no los puedo habrir o estan en blancos y no se que puede ser.

el programa en localhost funciona perfecto pero cuando lo subo al hosting no funciona no lanza ningun error pero simplemente no genera el archivo.

de antemanos gracias.
  #9 (permalink)  
Antiguo 24/11/2011, 16:08
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: PHP Exportar a Excel

Coloca al principio del codigo
Código PHP:
Ver original
  1. <?php
  2. ini_set('display_errors', true);
y verifica si te trae algun error.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #10 (permalink)  
Antiguo 04/05/2012, 15:07
 
Fecha de Ingreso: marzo-2012
Ubicación: Bogota
Mensajes: 177
Antigüedad: 12 años
Puntos: 2
Pregunta Respuesta: PHP Exportar a Excel

hola lo que pasa es que he utilizado el boton y al exportar me genera el archivo bien pero los datos no me cargan este fue el archivo que cree para llamar cuando le doy click al boton

Código PHP:
<?php
header
('Pragma: public'); 
header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); // Date in the past    
header('Last-Modified: ' gmdate('D, d M Y H:i:s') . ' GMT'); 
header('Cache-Control: no-store, no-cache, must-revalidate'); // HTTP/1.1 
header('Cache-Control: pre-check=0, post-check=0, max-age=0'); // HTTP/1.1 
header('Pragma: no-cache'); 
header('Expires: 0'); 
header('Content-Transfer-Encoding: none'); 
header('Content-Type: application/vnd.ms-excel'); // This should work for IE & Opera 
header('Content-type: application/x-msexcel'); // This should work for the rest 
header('Content-Disposition: attachment; filename="nombre.xls"');

include (
"conexion.php");
$Link=conexion();

$Fecha_Inicio=isset($_POST["Fecha_i"])? $_POST["Fecha_i"]: '';
$Fecha_Fin=isset($_POST["Fecha_f"]) ? $_POST["Fecha_f"]: '';
//$Hora_Inicio=$_POST['Hora_i'];
//$Hora_Fin=$_POST['Hora_f'];
$Codigo_llamada=isset($_POST["Codigo_llamada"]) ? $_POST["Codigo_llamada"]: '';
$Origen_llamada=isset($_POST["Origen_llamada"])? $_POST["Origen_llamada"]: '';
$Destino_llamada=isset($_POST["Destino_llamada"])? $_POST["Destino_llamada"]: '';
$Cod_autorizacion=isset($_POST["Cod_autorizacion"])? $_POST["Cod_autorizacion"]: '';
$Grupos=isset($_POST["Grupos"])? $_POST["Grupos"]: '';

    
$Dia=substr($Fecha_Inicio,0,2);
    
$Mes=substr($Fecha_Inicio,3,2);
    
$Año=substr($Fecha_Inicio,8,9);
    
$Fecha_i=$Dia.$Mes.$Año;
    
    
$Dia=substr($Fecha_Fin,1,1);
    
$Mes=substr($Fecha_Fin,3,2);
    
$Año=substr($Fecha_Fin,8,9);
    
$Fecha_f=$Dia.$Mes.$Año;

    

/*echo $Fecha_Fin;
echo "<br>";
echo $Codigo_llamada;
echo "<br>";
echo $Origen_llamada;
echo "<br>";
echo $Destino_llamada;
echo "<br>";
echo $Cod_autorizacion;
echo "<br>";
echo $Grupos;*/
/////////////////////////////////////////////////////////////////
    
echo "<table border='2' align='center'>";
    echo 
"<tr><td class='estilo2'>Informacion general </td></tr>";    
    echo 
"</table>";
    
    echo 
"<table border='2' align='center'>";
    echo 
"<tr>";
    echo 
"<td>Date</td><td>Time</td><td>Calling_num</td><td>Nombre</td><td>Apellido</td><td>Dialed_num</td><td>Llamada</td><td>Sec_dur</td><td>Cond_code</td>";
    echo 
"</tr>";

$a=0;//Celular
$b=0;//Internacional
$c=0;//Nacionales
$d=0;//Local
 /*$sql=mysql_query("select Date,Calling_num,Dialed_num,Sec_dur,Cond_code from principal where Date>='$Fecha_i' and Date<='$Fecha_f' and Calling_num in (select Extension from usuarios where id_Grupo='$Grupos')") 
    or die ("problemas en el insert".mysql_error());
        $num=mysql_num_rows($sql);
        echo $num;*/
   
$sql=mysql_query("select Date,Time,Calling_num,Dialed_num,Sec_dur,Cond_code from Principal where Date >='$Fecha_i' and Date<='$Fecha_f' and Calling_num in (select Extension from usuarios where id_Grupo='$Grupos' )order by Sec_dur Desc")
    or die (
"problemas en el insert".mysql_error());
        
        
    while (
$row=mysql_fetch_array($sql))
    {    
    
        
$Date=$row['Date'];    
        
$Time=$row['Time'];    
        
$Origen_llamada=$row['Calling_num'];
        
$Destino_llamada=$row['Dialed_num'];
        
$Duracion_llamada=$row['Sec_dur'];
        
$Codigo_llamada=$row['Cond_code'];
            
                
        
$ssql=mysql_query("select Nombre,Apellido from usuarios where Extension='$Origen_llamada'");
        
$row=mysql_fetch_array($ssql);
        
$Nombre=$row['Nombre'];    
        
$Apellido=$row['Apellido'];
            
            
            
$ssql=mysql_query("select  Descripcion from grupos where id_Grupo in (select id_Grupo from usuarios where Extension='$Destino_llamada')");
            
$arreglo=mysql_fetch_array($ssql);
            
$Grupo=$arreglo['Descripcion'];
            

            
$Celular=strlen($Destino_llamada);           
            if (
$Celular==11)
            {
                
$Grupo='Celular';
            }
            
$Nacional=strlen($Destino_llamada);
            if (
$Nacional==9)
            {
                
$Grupo='Nacional';
            }
            
$Local=strlen($Destino_llamada);
            if (
$Local==7)
            {
                
$Grupo='Local';
            }
            if (
$Celular==33)
            {
                
$Grupo='Celular';
            }
            
$Atencion=substr($Destino_llamada,0,2) ;          
            if (
$Atencion==18)
            {
                
$Grupo='Atencion al usuario';
            }
                            
            echo 
"<tr>";
            echo 
"<td>".$Date."</td>";
            echo 
"<td>".$Time."</td>";
            echo 
"<td>".$Origen_llamada."</td>";
            echo 
"<td>".$Nombre."</td>";
            echo 
"<td>".$Apellido."</td>";
            echo 
"<td>".$Destino_llamada."</td>";
            echo 
"<td>".$Grupo."</td>";
            echo 
"<td>".$Duracion_llamada."</td>";
            echo 
"<td>".$Codigo_llamada."</td>";
            echo 
"</tr>";
            
            
////////////////////////////////////////////////

        
$Destino_llamada=substr($Destino_llamada,0,2);

        if(
$Destino_llamada==33)
        {
            
$a=$a+1;//hacer solo un if para celular echo $Destino_llamada
        
}
        elseif(
$Destino_llamada==18)
        {
            
$b=$b+1;
        
        }
        elseif(
substr($Destino_llamada,0,1)==5)
        {
            
$c=$c+1;
        }
 
        else
        {
            
$d=$d+1;
        }
    
/////
    
}
    

    echo 
"</table>";
 
?>
puse el mismo codigo php que tengo en la pagina que quiero que me exporte no se si estoy haciendo mal por favor ayudenme gracias

Última edición por wendyl; 04/05/2012 a las 15:08 Razón: generar etiqueta php
  #11 (permalink)  
Antiguo 17/07/2012, 10:56
Avatar de totti026  
Fecha de Ingreso: junio-2011
Mensajes: 150
Antigüedad: 12 años, 9 meses
Puntos: 4
Respuesta: PHP Exportar a Excel

Cita:
Iniciado por pedroinformatico Ver Mensaje
Estimados consulta el tema es que estoy ocupando este codigo para exportar mi html a xsl, y todo perfecto se genera el archivo lo descargo todo bien.


pero al momento de subir esto al servidor no me genera mas los xsl o mejor dicho los genera pero corruptos y no los puedo habrir o estan en blancos y no se que puede ser.

el programa en localhost funciona perfecto pero cuando lo subo al hosting no funciona no lanza ningun error pero simplemente no genera el archivo.

de antemanos gracias.
Que tal pedroinformatico... tengo el mismo problema que tu.
Ya lo has podido resolver?

Etiquetas: excel, 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

SíEste tema le ha gustado a 2 personas




La zona horaria es GMT -6. Ahora son las 08:05.