Foros del Web » Programando para Internet » PHP »

Funcionamiento de PHPEXCEL

Estas en el tema de Funcionamiento de PHPEXCEL en el foro de PHP en Foros del Web. Hola a todos. Necesito exportar datos de una BBDD y dejarlos en una hoja de excel. Despues de mucho leer no consigo que me funcione ...
  #1 (permalink)  
Antiguo 08/07/2011, 01:27
 
Fecha de Ingreso: mayo-2010
Ubicación: Madrid
Mensajes: 74
Antigüedad: 14 años, 7 meses
Puntos: 0
Funcionamiento de PHPEXCEL

Hola a todos.

Necesito exportar datos de una BBDD y dejarlos en una hoja de excel. Despues de mucho leer no consigo que me funcione con la muchísima información que hay aquí y en otros sitios así que me he decidido por tratar de conseguirlo con este paquete de clases.

¿Alguien lo conoce y me puede ayudar a usarlo?

Os lo agradezco.
Un saludo
  #2 (permalink)  
Antiguo 08/07/2011, 04:15
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 14 años, 3 meses
Puntos: 331
Respuesta: Funcionamiento de PHPEXCEL

http://phpexcel.codeplex.com/release...nloadId=212183
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 08/07/2011, 04:48
 
Fecha de Ingreso: mayo-2010
Ubicación: Madrid
Mensajes: 74
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Funcionamiento de PHPEXCEL

repara2, muchas gracias por responderme.

Ese documento que me enlazas ya viene incluido en la descarga de todo el grupo de clases que lleva PHPEXCEL pero aunque ya lo leí no he encontrado la referencia que necesito. Todo lo que he encontrado que soy capaz de identificar como que me permitiría hacer un fichero xls es lo que hay en la sección 6, pero por el momento sólo veo ejemplos de cómo crear un fichero pero no de cómo crearlo con los datos de la BBDD en PHP.

Código PHP:
Ver original
  1. $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
  2. $objWriter->save("05featuredemo.xlsx");

Vale, con eso se supone que crea el fichero pero ¿como se adjuntan los datos?

Gracias por la ayuda.
  #4 (permalink)  
Antiguo 08/07/2011, 05:03
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años, 8 meses
Puntos: 326
Respuesta: Funcionamiento de PHPEXCEL

¿Sólo es exportar datos? ¿No te estás complicando mucho?

Si simplemente tienes que crear un fichero de excel con los datos de la/las tablas sql, hay formas más sencillas :)
  #5 (permalink)  
Antiguo 08/07/2011, 05:08
 
Fecha de Ingreso: mayo-2010
Ubicación: Madrid
Mensajes: 74
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Funcionamiento de PHPEXCEL

Pues seguro que sí que las hay pero como no he sido capaz de conseguirlo con la info que he ido encontrando al final me he decantado por usar ese paquete como última opción, pero ya veo que tampoco soy capaz.

Sólo es exportar datos. ¿Tienes alguna referencia que hayas probado y funcione?

Gracias
  #6 (permalink)  
Antiguo 08/07/2011, 05:20
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años, 8 meses
Puntos: 326
Respuesta: Funcionamiento de PHPEXCEL



Simplemente, pon esta cabecera:
Código PHP:
header("Content-type: application/vnd.ms-excel");

header("Content-Disposition:  filename=\"datos.xls\";"); 
y después muestra los datos como una tabla html normal y corriente. (Te genera un archivo descargable de excel!)

Última edición por Eleazan; 08/07/2011 a las 05:26
  #7 (permalink)  
Antiguo 08/07/2011, 06:47
 
Fecha de Ingreso: mayo-2010
Ubicación: Madrid
Mensajes: 74
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Funcionamiento de PHPEXCEL

Esa opción lo que me hace, si no me equivoco, es generar un xls con los datos que se muestran en la pantalla pero no es eso lo que necesito ya que no pienso mostrar en pantalla 1 millón de registros.

Quizás es que no he explicado bien el problema. Necesito descargar a petición del usuario ciertos datos de una BBDD, siempre los mismos, no hay ni siquiera una posibilidad de que el usuario decida que datos, la consulta es la que es y no hay más. No necesito verlos ni manipularlos en pantalla, tan sólo necesito un XLS con los datos. Me parecía más lógico que ni los tuviese que ver en pantalla, un simple botón que diga "Realizar descarga" y que genere el fichero. Ni siquiera que pregunte ruta alguna.

Yo ya he conseguido que lo que muestre en pantalla lo genere en XLS pero lo cierto es que me genera un documento excel incluyendo hasta los menús y la pantalla se queda con un mensaje de error. Digamos que consigo el excel pero de manera algo cutre y chapucera.

¿Algún enlace a info que me permita hacer esto?

Gracias.
  #8 (permalink)  
Antiguo 08/07/2011, 06:55
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años, 8 meses
Puntos: 326
Respuesta: Funcionamiento de PHPEXCEL

Veamos.

generaXLS.php
Código PHP:
<?php
header
("Content-type: application/vnd.ms-excel");

header("Content-Disposition:  filename=\"datos.xls\";");  
include(
"dbconnect.php");
$link conectar_bbdd();

$sql "SELECT * FROM `here`";
$r mysql_query($sql,$link);
echo 
'<table>';
while(
$arr mysql_fetch_array($rMYSQL_NUM)) {
  echo 
'<tr>';
  foreach(
$arr as $value) echo '<td>'.$value.'</td>';
  echo 
'</tr>';
}
echo 
'</table>';
Y luego, donde quieras un
Código HTML:
<a href="generaXLS.php">Generar XLS</a> 
Esto NO lo muestra por pantalla, te genera un XLS descargable con los datos de la tabla SQL :)

Evidentemente, tardará X tiempo en crearse.

¿Que quieres que sea un archivo ya creado en el servidor?
Puedes hacerlo con fopen, fwrite, y fclose. ¿Cómo? Créalo como un csv (coma separated values) que tb lo abre excel :)
  #9 (permalink)  
Antiguo 08/07/2011, 07:42
Avatar de Markgus  
Fecha de Ingreso: junio-2010
Mensajes: 152
Antigüedad: 14 años, 6 meses
Puntos: 5
Respuesta: Funcionamiento de PHPEXCEL

Cita:
Iniciado por Eleazan Ver Mensaje
¿Que quieres que sea un archivo ya creado en el servidor?
Puedes hacerlo con fopen, fwrite, y fclose. ¿Cómo? Créalo como un csv (coma separated values) que tb lo abre excel :)
yo quisiera aprender a hacer eso, como funciona? crearía el archivo con los headers y la extensión .csv como se guardaría en el servidor, tienes algún ejemplo o enlace?
  #10 (permalink)  
Antiguo 08/07/2011, 08:10
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años, 8 meses
Puntos: 326
Respuesta: Funcionamiento de PHPEXCEL

Cita:
Iniciado por Markgus Ver Mensaje
yo quisiera aprender a hacer eso, como funciona? crearía el archivo con los headers y la extensión .csv como se guardaría en el servidor, tienes algún ejemplo o enlace?
Un csv es un archivo de texto, normal y corriente, con extensión csv.............y con los valores separados por comas.

Por ejemplo:
Código:
id,nombre,apellido
1,pepito,deltoro
2,fulano,torres
3,maria,de la osa
Si eso lo guardas como csv, podrás abrirlo en excel! Simplemente, al abrir te preguntará cual es el separador (en este caso, la coma (por defecto!)).

Para hacerlo, bastaría con
Código PHP:
$fd fopen("test.csv""w");
fwrite($fd,"id,nombre,apellido\n");
frwite($fd,"1,pepito,deltoro\n");
frwite($fd,"2,fulano,torres\n");
fclose($fd); 
Este sería el ejemplo básico. Si lo quieres de una consulta SQL, es tan simple como un bucle ;)
  #11 (permalink)  
Antiguo 08/07/2011, 08:20
Avatar de Markgus  
Fecha de Ingreso: junio-2010
Mensajes: 152
Antigüedad: 14 años, 6 meses
Puntos: 5
Respuesta: Funcionamiento de PHPEXCEL

gracias ya me ubico ,por que no tenia ni la mas remota idea de como hacerlo y era una duda que ya tenia rato preguntándome si se podía o no jeje emm bueno me pondré a hacer un ejemplo al rato les cuento como me fue
  #12 (permalink)  
Antiguo 11/07/2011, 01:00
 
Fecha de Ingreso: mayo-2010
Ubicación: Madrid
Mensajes: 74
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Funcionamiento de PHPEXCEL

Gracias Eleazan. lo probé el viernes antes de abandonar el curro pero ya no te pude contestar.

no me funcionó del todo. Me explico.
entiendo que en la línea del include debo indicar el fichero que contiene la conexión a la BBDD por lo que en mi caso sería:
Código PHP:
Ver original
  1. include("../Connections/incid_preventiva.php");
¿No?

Lo que ya no he entendido es la línea del $link ¿Que función cumple esa línea?

Obviamente imagino que esa línea la debo cambiar por alguna otra ya que el servidor me devuelve un error y no lo se reparar.

Muchas gracias por tu ayuda.
  #13 (permalink)  
Antiguo 11/07/2011, 06:52
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años, 8 meses
Puntos: 326
Respuesta: Funcionamiento de PHPEXCEL

El $link, en mi caso, es la conexión con la bbdd. Supongo que tu incluyes un fichero que te realiza la conexión... en mi caso, incluyo el fichero que en vez de realizar la conexión, lo que tiene son funciones... una de las cuales me realiza la conexión ^^

Si no es así en tu caso, la línea de
Código PHP:
$link conectar_bbdd(); 
No hace falta que la pongas...

y probablemente, tendrás que borra el $link del mysql_query ^^
  #14 (permalink)  
Antiguo 11/07/2011, 09:08
Avatar de Markgus  
Fecha de Ingreso: junio-2010
Mensajes: 152
Antigüedad: 14 años, 6 meses
Puntos: 5
Respuesta: Funcionamiento de PHPEXCEL

mm tengo una duda no logro acomodar los datos de la consulta en el archivo, pensé creando una tabla pero el fwrite no me lo agarra porque pues el table es de html como podria acomodarlos gracias
  #15 (permalink)  
Antiguo 12/07/2011, 01:22
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años, 8 meses
Puntos: 326
Respuesta: Funcionamiento de PHPEXCEL

Cita:
Iniciado por Markgus Ver Mensaje
mm tengo una duda no logro acomodar los datos de la consulta en el archivo, pensé creando una tabla pero el fwrite no me lo agarra porque pues el table es de html como podria acomodarlos gracias
Código PHP:
$sql "SELECT * FROM `here`";
$r mysql_query($sql,$link);
$fd fopen("myfile.csv","w");
while(
$arr mysql_fetch_array($rMYSQL_NUM)) { //Bucle por cada elemento de la tabla
  
$first true//Estamos en la primera columna
  
foreach($arr as $value) {
      if(
$first) { fwrite($fd,$value); $first false; } //Escribimos el valor
      
else fwrite($fd,','.$value); //Escribimos la coma, y luego el valor

  
}
  
fwrite($fd,'\n'); //Hacemos el salto de linea
  

}
fclose($fd); 
Yo haría algo así (lo cual, no quiere decir q este bien, o sea óptimo!)
  #16 (permalink)  
Antiguo 12/07/2011, 07:31
Avatar de Markgus  
Fecha de Ingreso: junio-2010
Mensajes: 152
Antigüedad: 14 años, 6 meses
Puntos: 5
Respuesta: Funcionamiento de PHPEXCEL

ok gracias mira yo me encontre este codigo funciona bien pero no logro acomodarlo con nombres de los campos en la primera columna, bueno seguiré intentando mientras dejo este código que funciona solo falta eso de los nombres de las columnas

Código PHP:
<?
$f 
fopen($carpeta."/"."reporte.csv","wb") or die ("problemas en la creacion");

$sep ","//separador

$etiq 'campo1' $sep 'campo3'$sep 'campo5'.  "\n"
fwrite($f,$etiq);

$ssql "SELECT  campo1,campo3,campo5 FROM Tabla";


$result mysql_query($ssql) or die(mysql_error());



while (
$datos mysql_fetch_array($result))
{

$linea .= $datos['campo1'] .$sep.$datos ['campo3'] .$sep.$datos ['campo5'] ."\n";

fwrite($f,$linea);




}
fclose($f);




echo 
"<a href='".$archivo."'>Haz click aqui</a>";



?>
ya edite arriba con la solución gracias encontré la solcion en esta enlace
http://www.forosdelweb.com/f18/poner...vo-csv-606535/

Última edición por Markgus; 12/07/2011 a las 09:33 Razón: encontré la solución
  #17 (permalink)  
Antiguo 13/07/2011, 03:34
 
Fecha de Ingreso: mayo-2010
Ubicación: Madrid
Mensajes: 74
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Funcionamiento de PHPEXCEL

Cita:
Iniciado por Eleazan Ver Mensaje
El $link, en mi caso, es la conexión con la bbdd. Supongo que tu incluyes un fichero que te realiza la conexión... en mi caso, incluyo el fichero que en vez de realizar la conexión, lo que tiene son funciones... una de las cuales me realiza la conexión ^^

Si no es así en tu caso, la línea de
Código PHP:
$link conectar_bbdd(); 
No hace falta que la pongas...

y probablemente, tendrás que borra el $link del mysql_query ^^
Pues nada, después de tanto leer, tanto buscar, tanto probar me has conseguido ayudar a solucionar el problema. De hecho tu código casi me ha funcionado sin modificaciones más que esas que hemos comentado.

Ahora yo le he incluido la cabecera de los datos y estos salen correctamente.

Muchísimas gracias, Eleazan.
  #18 (permalink)  
Antiguo 13/07/2011, 07:20
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años, 8 meses
Puntos: 326
Respuesta: Funcionamiento de PHPEXCEL

No hay de qué.

Etiquetas: funcionamiento, phpexcel
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 10:22.