Foros del Web » Programando para Internet » PHP »

hola como puedo generar un excel desde php

Estas en el tema de hola como puedo generar un excel desde php en el foro de PHP en Foros del Web. hola amigos necesito saber como generar un archivo excel..... los datos ke va a mostrar este archivo se deben sacar de la base de datos ...
  #1 (permalink)  
Antiguo 20/03/2004, 09:59
 
Fecha de Ingreso: febrero-2004
Ubicación: horcon
Mensajes: 133
Antigüedad: 20 años, 2 meses
Puntos: 1
¿como generar un archivo excel desde php?

hola amigos necesito saber como generar un archivo excel.....
los datos ke va a mostrar este archivo se deben sacar de la base de datos (mysql)... ojala me puedan ayudar muchas gracias si tienen un jemplo del codigo mejor adios y saludos a todos..
__________________
pato
  #2 (permalink)  
Antiguo 21/03/2004, 12:02
Avatar de mafima  
Fecha de Ingreso: abril-2003
Ubicación: Medellin-Colombia
Mensajes: 1.109
Antigüedad: 21 años
Puntos: 24
hace rato lo hice asi que no lo recuerdo muy bien

beuno lo primero que debes hacer
es abrir el archivo
con la función fopen, es facil e imagino que ya sabes como hacerlo

- lo segundo que debes tener en cuenta
es que la estructura de exel, simplemente son tablas
des esta forma, haces lo sigueinete

<table...>
<tr>
<td>
luis
</td>
</tr>
</table>

te insertara el valor luis en la celda a1...

espero te halla quedado claro aunke se que fue muy leve la explicación
si no te sale como te digo pregunta de nuevo
trataere de responder
__________________
SEO en Medellin
  #3 (permalink)  
Antiguo 21/03/2004, 13:14
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Revisa las FAQ's del foro PHP .. tienes un ejemplo.

Exel interpreta bien como celdas y filas una estructura HTML de tabla común (<table> .. <td> ..<tr>) .. así que sólo tienes que obtener tus datos como una tabla HTML y crear el archivo (fopen() en modo escritura .. fwrite() .. etc ..).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 21/03/2004, 13:46
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
(Mensajes unidos .. cucox .. por favor no repitas mensajes. Si notas que no obtienes respuestas intenta explicar mejor lo que requieres o pedir más ayuda .. pero sobre el mismo mensaje.)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 21/03/2004, 17:49
 
Fecha de Ingreso: febrero-2004
Ubicación: horcon
Mensajes: 133
Antigüedad: 20 años, 2 meses
Puntos: 1
gracias amigos por sus respuestas voy a intentar con lo ke medijeron ustedes... adios saludos a todos
__________________
pato
  #6 (permalink)  
Antiguo 21/03/2004, 18:01
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
No sé si llegastes a ver este mensaje ...

http://www.forosdelweb.com/s/msg190343.html
(se publicó hoy mismo .. y hace lo que pretendes)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 21/03/2004, 21:58
 
Fecha de Ingreso: marzo-2004
Mensajes: 77
Antigüedad: 20 años, 1 mes
Puntos: 0
Bueno yo modifique un ejemplo k encontre por alli,y me salio bien, haber para k se entienda donde dice cabezera sera que ira en el primer renglon del excel, si quires no los pones, pero sale muy bien, claro esta sin formatear osea las celdas sin colores ni nada por el estilo...;)
ah tambien me faltaba decir que esto lo puse en un enlace porque a parte k se mostraba la consulta deberia tener la opcion de descargarlo en excel..puse un link dando los parametros de la consulta para k se generara...haber si le interesa a alguien.

Código PHP:
<?php
require('../funciones/func_inicio.php');
$conexion mysql_pconnect(bd_cadena,bd_usuario,bd_password);
if (!
$conexion)
{
    echo 
"Error: No se pudo establecer conexión con la base de datos";
    exit;
}
$bd=mysql_select_db(bd_nombre,$conexion);

if (
$cod_pais=="02"){
    
$cabezera=array("Código","DNI-CI","ZP","ZP'","ZR","ZR'","UN","UN'","EE","EE'","GV","GV'","EM","EM'","HM","HM'","HO","HO'","OJ","OJ'","CF","CF'","NBI","NBI'","NOTA");
    foreach(
$cabezera as $valor){
    
$header.=$valor."\t";
    }
}
if (
$cod_pais=="05"){
    
$cabezera=array("Código","DNI-CI","ZP","ZP'","ZR","ZR'","UN","UN'","EE","EE'","GV","GV'","EM","EM'","HM","HM'","HO","HO'","OJ","OJ'","CF","CF'","OA","OA'","NOTA" );
    foreach(
$cabezera as $valor){
    
$header.=$valor."\t";
    }
}

//calculo y media para la varianza de Perú            
$sql_MedStd_pe="select avg(zona_res), avg(zona_proc), avg(univer), avg(educ_escol), avg(grup_vuln), avg(educ_madre), ";
$sql_MedStd_pe.="avg(hnos_menor), avg(hogar_orig), avg(ocupac_jefe), avg(compos_famil), avg(nbi_hogar), ";
$sql_MedStd_pe.="stddev(zona_res), stddev(zona_proc), stddev(univer), stddev(educ_escol), stddev(grup_vuln), stddev(educ_madre), ";
$sql_MedStd_pe.="stddev(hnos_menor), stddev(hogar_orig), stddev(ocupac_jefe), stddev(compos_famil), stddev(nbi_hogar) ";
$sql_MedStd_pe.="from promedio_notas where cod_pais='02'";
$result=mysql_query($sql_MedStd_pe,$conexion);
while (
$fila=mysql_fetch_array($result,MYSQL_NUM))
  { 
    
$avg_zona_res_pe=$fila[0];
    
$avg_zona_proc_pe=$fila[1];
    
$avg_univer_pe=$fila[2];
    
$avg_educ_escol_pe=$fila[3];
    
$avg_grup_vuln_pe=$fila[4];
    
$avg_educ_madre_pe=$fila[5];
    
$avg_hnos_menor_pe=$fila[6];
    
$avg_hogar_ori_pe=$fila[7]; 
    
$avg_ocupac_jefe_pe=$fila[8];
    
$avg_compos_famil_pe=$fila[9];
    
$avg_nbihogar_pe=$fila[10];
    
$stddev_zona_res_pe=$fila[11];
    
$stddev_zona_proc_pe=$fila[12];
    
$stddev_univer_pe=$fila[13];
    
$stddev_educ_escol_pe=$fila[14];
    
$stddev_grup_vuln_pe=$fila[15];
    
$stddev_educ_madre_pe=$fila[16];
    
$stddev_hnos_menor_pe=$fila[17];
    
$stddev_hogar_orig_pe=$fila[18];
    
$stddev_ocupac_jefe_pe=$fila[19];
    
$stddev_compos_famil_pe=$fila[20];
    
$stddev_nbi_hogar_pe=$fila[21];
  }
//calculo y media para la varianza de Chile
$sql_MedStd_ch="select avg(zona_res), avg(zona_proc), avg(univer), avg(educ_escol), avg(grup_vuln), avg(educ_madre), ";
$sql_MedStd_ch.="avg(hnos_menor), avg(hogar_orig), avg(ocupac_jefe), avg(compos_famil), avg(ocup_actual), ";
$sql_MedStd_ch.="stddev(zona_res), stddev(zona_proc), stddev(univer), stddev(educ_escol), stddev(grup_vuln), stddev(educ_madre), ";
$sql_MedStd_ch.="stddev(hnos_menor), stddev(hogar_orig), stddev(ocupac_jefe), stddev(compos_famil), ";
$sql_MedStd_ch.="stddev(ocup_actual) from promedio_notas where cod_pais='05'";
$result=mysql_query($sql_MedStd_ch,$conexion);
while (
$fila=mysql_fetch_array($result,MYSQL_NUM))

    
$avg_zona_res_ch=$fila[0];
    
$avg_zona_proc_ch=$fila[1];
    
$avg_univer_ch=$fila[2];
    
$avg_educ_escol_ch=$fila[3];
    
$avg_grup_vuln_ch=$fila[4];
    
$avg_educ_madre_ch=$fila[5];
    
$avg_hnos_menor_ch=$fila[6];
    
$avg_hogar_ori_ch=$fila[7]; 
    
$avg_ocupac_jefe_ch=$fila[8];
    
$avg_compos_famil_ch=$fila[9];
    
$avg_ocup_actual_ch=$fila[10];
    
$stddev_zona_res_ch=$fila[11];
    
$stddev_zona_proc_ch=$fila[12];
    
$stddev_univer_ch=$fila[13];
    
$stddev_educ_escol_ch=$fila[14];
    
$stddev_grup_vuln_ch=$fila[15];
    
$stddev_educ_madre_ch=$fila[16];
    
$stddev_hnos_menor_ch=$fila[17];
    
$stddev_hogar_orig_ch=$fila[18];
    
$stddev_ocupac_jefe_ch=$fila[19];
    
$stddev_compos_famil_ch=$fila[20];
    
$stddev_ocup_actual_ch=$fila[21];
}
    
$sqlexcel="select datos_personales.cod_postulante, datos_personales.dni_ci, promedio_notas.cod_pais, ";
$sqlexcel.="promedio_notas.zona_res, promedio_notas.zona_proc, promedio_notas.univer, promedio_notas.educ_escol, ";
$sqlexcel.="promedio_notas.grup_vuln, promedio_notas.educ_madre, promedio_notas.hnos_menor, ";
$sqlexcel.="promedio_notas.hogar_orig, promedio_notas.ocupac_jefe, promedio_notas.compos_famil, ";
$sqlexcel.="promedio_notas.nbi_hogar, promedio_notas.ocup_actual, promedio_notas.promed_final ";
$sqlexcel.="from datos_personales, promedio_notas ";
$sqlexcel.="where (datos_personales.cod_postulante=promedio_notas.cod_postulante) ";
if (!empty(
$nota_min)||($nota_min==0))
$sqlexcel.="and cod_pais='$cod_pais' and promed_final>=$nota_min ";
$sqlexcel.="order by cod_postulante";
$result mysql_query($sqlexcel$conexion);

while (
$fila=mysql_fetch_array($result,MYSQL_NUM))
{
    
$cod_postulante=$fila[0];
    
$dni_ci=$fila[1];
    
$cod_pais=$fila[2];
    
$zona_res=$fila[3];
    
$zona_proc=$fila[4];
    
$univer=$fila[5];
    
$educ_escol=$fila[6];
    
$grup_vuln=$fila[7];
    
$educ_madre=$fila[8];
    
$hnos_menor=$fila[9];
    
$hogar_orig=$fila[10];
    
$ocupac_jefe=$fila[11];
    
$compos_famil=$fila[12];
    
$nbi_hogar=$fila[13];
    
$ocup_actual=$fila[14];
    
$promed_final=$fila[15];
    
    
//Calculo del promedio final para Peru
    
if ($cod_pais=="02")
    {
        
$zo_res=(($zona_res-$avg_zona_res_pe)/$stddev_zona_res_pe);
        
$zo_proc=(($zona_proc-$avg_zona_proc_pe)/$stddev_zona_proc_pe);
        
$uni=(($univer-$avg_univer_pe)/$stddev_univer_pe);
        
$edu_esco=(($educ_escol-$avg_educ_escol_pe)/$stddev_educ_escol_pe);
        
$gru_vul=(($grup_vuln-$avg_grup_vuln_pe)/$stddev_grup_vuln_pe);
        
$edu_madre=(($educ_madre-$avg_educ_madre_pe)/$stddev_educ_madre_pe);
        
$hnos_men=(($hnos_menor-$avg_hnos_menor_pe)/$stddev_hnos_menor_pe);
        
$hog_ori=(($hogar_orig-$avg_hogar_orig_pe)/$stddev_hogar_orig_pe);
        
$ocup_jefe=(($ocupac_jefe-$avg_ocupac_jefe_pe)/$stddev_ocupac_jefe_pe);
        
$compo_fami=(($compos_famil-$avg_compos_famil_pe)/$stddev_compos_famil_pe);
        
$nbi_hog=(($nbi_hogar-$avg_nbi_hogar_pe)/$stddev_nbi_hogar_pe);
        
$fila_peru=array(
            
$cod_postulante,
            
$dni_ci,
            
$zona_proc,
            
$zo_proc,
            
$zona_res,
            
$zo_res,
            
$univer,
            
$uni,
            
$educ_escol,
            
$edu_esco,
            
$grup_vuln,
            
$gru_vul,
            
$educ_madre,
            
$edu_madre,
            
$hnos_menor,
            
$hnos_men,
            
$hogar_orig,
            
$hog_ori,
            
$ocupac_jefe,
            
$ocup_jefe,
            
$compos_famil,
            
$compo_fami,
            
$nbi_hogar,
            
$nbi_hog,
            
$promed_final);
          
$line '';
          foreach(
$fila_peru as $value){
            if(!isset(
$value) || $value == ""){
              
$value "\t";
            }else{
              
$value str_replace('"''""'$value);
              
$value '"' $value '"' "\t";
            }
            
$line .= $value;
          }
          
$data .= trim($line)."\n";
    }
//fin del if_peru    
    
    //Calculo del promedio final para Chile
    
if ($cod_pais=="05")
    {
        
$zo_res=(($zona_res-$avg_zona_res_ch)/$stddev_zona_res_ch);
        
$zo_proc=(($zona_proc-$avg_zona_proc_ch)/$stddev_zona_proc_ch);
        
$uni=(($univer-$avg_univer_ch)/$stddev_univer_ch);
        
$edu_esco=(($educ_escol-$avg_educ_escol_ch)/$stddev_educ_escol_ch);
        
$gru_vul=(($grup_vuln-$avg_grup_vuln_ch)/$stddev_grup_vuln_ch);
        
$edu_madre=(($educ_madre-$avg_educ_madre_ch)/$stddev_educ_madre_ch);
        
$hnos_men=(($hnos_menor-$avg_hnos_menor_ch)/$stddev_hnos_menor_ch);
        
$hog_ori=(($hogar_orig-$avg_hogar_orig_ch)/$stddev_hogar_orig_ch);
        
$ocup_jefe=(($ocupac_jefe-$avg_ocupac_jefe_ch)/$stddev_ocupac_jefe_ch);
        
$compo_fami=(($compos_famil-$avg_compos_famil_ch)/$stddev_compos_famil_ch);
        
$ocup_act=(($ocup_actual-$avg_ocup_actual_ch)/$stddev_ocup_actual_ch);
        
$fila_chile=array(
            
$cod_postulante,
            
$dni_ci,
            
$zona_proc,
            
$zo_proc,
            
$zona_res,
            
$zo_res,
            
$univer,
            
$uni,
            
$educ_escol,
            
$edu_esco,
            
$grup_vuln,
            
$gru_vul,
            
$educ_madre,
            
$edu_madre,
            
$hnos_menor,
            
$hnos_men,
            
$hogar_orig,
            
$hog_ori,
            
$ocupac_jefe,
            
$ocup_jefe,
            
$compos_famil,
            
$compo_fami,
            
$ocup_actual,
            
$ocup_act,
            
$promed_final);
              
$line '';
              foreach(
$fila_chile as $value){
                if(!isset(
$value) || $value == ""){
                  
$value "\t";
                }else{
                  
$value str_replace('"''""'$value);
                  
$value '"' $value '"' "\t";
                }
                
$line .= $value;
              }
              
$data .= trim($line)."\n";
    }
}
//fin while

  
$data str_replace("\r"""$data);
if (
$data == "") {
  
$data "\nNo se encontraron registros\n";
}
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=compxPond.xls");
header("Pragma: no-cache");
header("Expires: 0");

echo 
$header."\n".$data
?>
tambien quise poner una imagen para k se vea como era la salida ,pero no supe como hacerlo, por mas k intente..Jejeje
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 20:09.