Foros del Web » Programando para Internet » PHP »

Exportar a Excel

Estas en el tema de Exportar a Excel en el foro de PHP en Foros del Web. Hola: tengo que exportar el resultado de una consulta en una base de datos mysql a excel... Se puede hacer??? y si se pudiera... me ...
  #1 (permalink)  
Antiguo 04/02/2005, 06:49
 
Fecha de Ingreso: julio-2002
Mensajes: 119
Antigüedad: 21 años, 9 meses
Puntos: 0
Exportar a Excel

Hola: tengo que exportar el resultado de una consulta en una base de datos mysql a excel...

Se puede hacer??? y si se pudiera... me indican como???

Gracias
  #2 (permalink)  
Antiguo 07/02/2005, 16:31
 
Fecha de Ingreso: julio-2002
Mensajes: 119
Antigüedad: 21 años, 9 meses
Puntos: 0
Nadie sabe como hacer esto???
  #3 (permalink)  
Antiguo 07/02/2005, 16:40
Avatar de e-miliox  
Fecha de Ingreso: noviembre-2002
Ubicación: San Antonio - Chile
Mensajes: 223
Antigüedad: 21 años, 5 meses
Puntos: 7
Para pasar datos a excel la manera mas sencilla es modificar el encabezado de la pagina y establecer en estos que el tipo de data que se enviara es un .xls. Luego toda la salida que envies se abrira en el excewl o quedara como un excel guardado. La graci es que para que esta salida quede tabulada (usando las grillas del excel) generas tabnlas en html de ighual forma que si las quisieras distribuir en tu navegador, usando las etiquetas <table> <tr> <td> etc...

Luego si lo necesitas te puedo dar un ejemplo (ahora no alcanzo :))

saludos
__________________
=PoWeReD By MySeLf!=
  #4 (permalink)  
Antiguo 07/02/2005, 19:20
 
Fecha de Ingreso: julio-2002
Mensajes: 119
Antigüedad: 21 años, 9 meses
Puntos: 0
te agradecería mucho si me pudieras dar el ejemplo.. la verdad no se como hacerlo...
  #5 (permalink)  
Antiguo 07/02/2005, 21:52
 
Fecha de Ingreso: marzo-2003
Mensajes: 99
Antigüedad: 21 años, 1 mes
Puntos: 0
Hola si por favor un ejemplo a mi tambien me serviria mucho gracias :)
  #6 (permalink)  
Antiguo 07/02/2005, 22:13
Avatar de H0m3r0J4y  
Fecha de Ingreso: abril-2002
Mensajes: 123
Antigüedad: 22 años
Puntos: 0
Una forma sencilla de acerlo es sacar los datos por medio de la propiedad INTO OUTFILE del comando SELECT usando:

, como separador de campos (FIELDS TERMINATED BY)
\n como final de linea (LINES TERMINATED BY)
' para encerrar los valores de los campos (OPTIONALLY ENCLOSED BY)

y renombrar el archivo como .csv, esto hara que excel lo reconozca y respete el encolumnado.

Aqui les va un ejemplo:

SELECT nombre, apellido, edad INTO OUTFILE '/tmp/usuarios.csv'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM usuarios;

Salutes!

PD: tengan en cuenta que MySQL debe tener permisos de escritura sobre la carpeta de destino, en este caso tmp
  #7 (permalink)  
Antiguo 09/02/2005, 16:06
Avatar de e-miliox  
Fecha de Ingreso: noviembre-2002
Ubicación: San Antonio - Chile
Mensajes: 223
Antigüedad: 21 años, 5 meses
Puntos: 7
Hola

Aca les entrego un ejemplo para generar archivos Excel de manera sencilla. Obviamente esto es una manera super basica de enviar la data a una planilla, hay clases mucho mas completas para esta tarea, sin embargo, la manera que les voy a dar a continuacion no deja de ser efectiva.

Código PHP:
<?php
// ...
// sacar todos los libros de la tabla ordenados por precio y nombre
$select "Select nombre, precio from Libros order by precio desc, nombre asc";
$result mysql_query($select) or die("Error al ejecutar la consulta<br />"mysql_error());

if (
mysql_num_rows($result) > 0)
{
    
// no regreso filas, informamos y finalizamos
    
echo "sorry pero no se encontraron libros en la base de datos.";
}
else
{
    
// encontramos filas, entonces generaremos una estructura de tablas HTML tal como si
    // la fueramos a desplegar en el navegador con ECHO's pero en vez de eso 
    // la guardamos en una VARIABLE...
    
    // inicio tabla y sus encabezados...
    
$strOutput "
    <table>
        <tr>
            <td><b>Nombre</b></td>
            <td><b>Precio</b></td>
        </tr>
    "
;
    
// recorremos todos los registros obtenidos por la consulta
    
while($list($strNombreLibro$strPrecioLibro) = mysql_fetch_row($result))
    {
        
// ...y los vamos tabulando (ojo con el punto antes de la asignacion, estamos concatenando)
        
$strOutput .= "
        <tr>
            <td>"
.$strNombreLibro."</td>
            <td>"
.$strPrecioLibro."</td>
        </tr>
        "
;
    }
    
    
// termino tabla (lo mismo con respecto al punto)
    
$strOutput .= "
    </table>
    "
;
    
    
// una vez que tenemos los datos tabulados en la estructura HTML
    // modificamos los encabezados de la pagina para que el navegador piense que le estamos
    // enviando un archivo excel. 
    // NOTA: aca otra restriccion: para que funcione y no de un error de "headers already sent"
    // este script no debe enviar ninguna otra salida al navegador ANTES
    
    
header("Content-Description: File Transfer");
    
header("Content-Type: application/force-download");
    
// ARCHIVO.XLS es el nombre del archivo que saldra, puedes cambiarlo
    
header("Content-Disposition: attachment; filename=ARCHIVO.XLS");
    
    
// una vez modificados los encabezados, hacemos ECHO de la salida (el HTML generado anteriormente)
    // este es el unico echo que se hace si el proceso se ha realizado sin problemas
    
echo $strOutput;
    
    
// y... fin :)
    
die();
}
?>
Una vez ejecutado este codigo te saldra la tipica ventanita para bajar una archivo, le das aceptar y lo guardas, luego lo abres con el excel y listo :)

Eso seria

Saludos
__________________
=PoWeReD By MySeLf!=

Última edición por e-miliox; 09/02/2005 a las 16:07
  #8 (permalink)  
Antiguo 11/02/2005, 13:54
 
Fecha de Ingreso: febrero-2005
Mensajes: 5
Antigüedad: 19 años, 2 meses
Puntos: 0
e-miliox, hola sabes que al ejecutar el programa me salio el siguiente error

Fatal error: Can't use function return value in write context in c:\AppServ\www\fides\pruebaexcel.php on line 27

podrian ayudarme a ver que hago
  #9 (permalink)  
Antiguo 11/02/2005, 15:24
Avatar de bhonox  
Fecha de Ingreso: julio-2002
Ubicación: Rengo-Viña del Mar-Stgo
Mensajes: 1.213
Antigüedad: 21 años, 9 meses
Puntos: 0
el error que cometio mi amigo emilio fue poner while ($list...
el $list es sin $
la linea debiese ser de la siguiente manera
while(list($strNombreLibro, $strPrecioLibro) = mysql_fetch_row($result))

Saludos....
__________________
Atte
Real BHONOX

Programador Cervecero! :borracho:
Lenguajes vengan a MI!!
  #10 (permalink)  
Antiguo 16/02/2005, 07:23
 
Fecha de Ingreso: febrero-2005
Mensajes: 5
Antigüedad: 19 años, 2 meses
Puntos: 0
gracias a todos por su ayuda ya lo logre hacer
  #11 (permalink)  
Antiguo 17/02/2005, 21:10
 
Fecha de Ingreso: marzo-2003
Mensajes: 99
Antigüedad: 21 años, 1 mes
Puntos: 0
gracias

si muchas gracias aprendi :) yo tambien
  #12 (permalink)  
Antiguo 18/02/2005, 07:59
 
Fecha de Ingreso: julio-2002
Mensajes: 119
Antigüedad: 21 años, 9 meses
Puntos: 0
aprendimos todos por lo visto.. me sumo a los agredecimientos...
  #13 (permalink)  
Antiguo 18/02/2005, 09:31
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
(En las FAQ's de este foro .. tenían un ejemplo: http://www.forosdelweb.com/f18/faqs-php-530600-post254356/ .. por lo menos se vé la "base", porsupuesto este ejemplo complementa al otro .. )

Un saludo,
  #14 (permalink)  
Antiguo 19/08/2005, 12:08
 
Fecha de Ingreso: marzo-2004
Ubicación: Bucaramanga
Mensajes: 71
Antigüedad: 20 años, 1 mes
Puntos: 0
Emiliox el ejemplo es bueno y me funciona pero tengo una tabla de unas 2500 filas y el excel solo me abre como 945, no se cual puede ser el error o si a alguien le ha sucedido lo mismo me podrian ayudar please........
  #15 (permalink)  
Antiguo 16/09/2005, 09:23
 
Fecha de Ingreso: septiembre-2005
Ubicación: Guayaquil
Mensajes: 2
Antigüedad: 18 años, 7 meses
Puntos: 0
Gracias por el codigo, pero una pregunta este codigo baja el archivo al servidor o a la máquina local, porque estoy teniendo conflictos de seguridad o depende de la direccion del browser para descargar archivos
  #16 (permalink)  
Antiguo 16/09/2005, 09:58
Avatar de e-miliox  
Fecha de Ingreso: noviembre-2002
Ubicación: San Antonio - Chile
Mensajes: 223
Antigüedad: 21 años, 5 meses
Puntos: 7
Hola! hace muuucho tiempo que no entraba al foro :D

nandors1: el archivo te lo envia el servidor (quien esta ejecutando el script php) al navegador (que esta instalado en tu computador). Ahora, claro, es posible que tengas problemas de permisos para guardar el archivo que te envia con los datos, que tal si revisas los permisos que tienes en esa carpeta? sino, lo que puedes hacer es descargar el archivo (al ponerle guardar como) en la carpeta temporal del sistema (/windows/temp/ en windows o /tmp/ en linux, por ejemplo) generalmente estas carpetas no son afectadas por las politicas de seguridad que aplican los admins... bueno esa es solo una idea en todo caso.

Suerte con eso, y cuentanos como te va :)

Saludos
__________________
=PoWeReD By MySeLf!=
  #17 (permalink)  
Antiguo 16/09/2005, 11:15
 
Fecha de Ingreso: septiembre-2005
Ubicación: Guayaquil
Mensajes: 2
Antigüedad: 18 años, 7 meses
Puntos: 0
Gracias Emiliox me sirvio mucho tu codigo.

Pasa bien.
  #18 (permalink)  
Antiguo 02/11/2005, 07:48
 
Fecha de Ingreso: febrero-2003
Ubicación: Santiago
Mensajes: 220
Antigüedad: 21 años, 2 meses
Puntos: 4
e-miliox, acerca de tu codigo:

if (mysql_num_rows($result) > 0)
{
// no regreso filas, informamos y finalizamos
echo "sorry pero no se encontraron libros en la base de datos.";
}

xDDD cuidado con el IF :p saludos, me voy que estoy en el trabajo. adios.
__________________
Roberto Osses Elgueta
Senior Web Developer
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 04:05.