Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > PHP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-11-2006
halizia halizia is offline
Miembro
 
Registrado: abr 2006
Posts: 116
Poder: 18
halizia Va por buen camino
Thumbs down exportar a excel desde php

Hola!

quisiera exportar unos datos que obtengo desde php a un hoja de cálculo excel. ¿alguien sabe cómo hacerlo?

Saludos

Gracias!

Última edición por halizia fecha: 22-11-2006 a las 14:55:54.
Responder Con Cita
  #2  
Antiguo 22-11-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Existen varias clases ya hechas para eso. Yo he usado el BiffWriter de Xavier Noguer con buenos resultados. No confundir con esta otra, que es excesivamente cara

Por cierto, estas clase sirven para crear hojas de excel con formato, pero también podrías optar por algo más sencillo como generar un CSV (archivo de valores separados por comas) que es fácil de hacer con PHP y que se puede leer en Excel.

// Saludos
Responder Con Cita
  #3  
Antiguo 22-11-2006
bohemioloco bohemioloco is offline
Miembro
 
Registrado: nov 2006
Ubicación: Tarija - Bolivia
Posts: 20
Poder: 0
bohemioloco Va por buen camino
Hola:

Te recomiendo visitar este hilo en él encontararas un script sencillo que puedes implementar.

Espero te sirva

Saludos
__________________
Todo lo que sé.... se lo debo a mi ignorancia
Responder Con Cita
  #4  
Antiguo 24-11-2006
halizia halizia is offline
Miembro
 
Registrado: abr 2006
Posts: 116
Poder: 18
halizia Va por buen camino
meha gustado lo del csv, y quisiera saber si alguien podria hacer un pequeño ejemplo del codigo necesario para crear un archivo csv.

Gracias

Última edición por halizia fecha: 24-11-2006 a las 12:10:40.
Responder Con Cita
  #5  
Antiguo 24-11-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Código PHP:
<?php

/**
 * En este ejemplo utilizaremos como fuente de datos un sencillo Array. Natu-
 * ralmente, la fuente de datos en tu caso sería la propia base de datos, es
 * decir, la correspondiente consulta que te los retornara.
 */


// Fuente de datos (ficticia)
$fuenteDeDatos = array();

// Una "columna" de datos
$datosPersonas = array
(
  
'nombre' => 'Pedro',
  
'apellidos' => 'Caralamaro Periquito',
  
'ciudad' => 'El Cairo',
  
'pais' => 'Egipto'
);

// Añadimos los datos
$fuenteDeDatos[] = $datosPersonas;

// Otra "columna" de datos
$datosPersonas = array 
(
  
'nombre' => 'Juan',
  
'apellidos' => 'Altisonante Manrique',
  
'ciudad' => 'Oaxaca',
  
'pais' => 'México'
);

// Añadimos los datos
$fuenteDeDatos[] = $datosPersonas;

// Preparamos la salida (en formato CVS)
$archivoCvsSalida '';

// Recorremos la fuente de datos
foreach($fuenteDeDatos as $datosPersona)
{
  
/**
   * Y vamos ahora a añadir los datos al "archivo CVS".
   * 
   * Se trata de añadir los distintos valores separados por comas,
   * (de ahí las siglas CVS, Comma Value Separeted).
   * 
   * Creo que encerrar los propios valores entre comillas no es siempre
   * necesario, pero, ante la duda, yo lo hago así aquí. En todo caso...
   */
  
$archivoCvsSalida .= "\"{$datosPersona['nombre']}\",";
  
$archivoCvsSalida .= "\"{$datosPersona['apellidos']}\",";
  
$archivoCvsSalida .= "\"{$datosPersona['ciudad']}\",";
  
$archivoCvsSalida .= "\"{$datosPersona['pais']}\"";   
  
$archivoCvsSalida .= "\n";      
}

/**
 * Ahora podremos ver el archivo en el navegador. Lo hacemos entre etiquetas
 * de "preformateado" para que se pueda apreciar correctamente el retorno de
 * carro entre los distintos registros/columnas.
 */ 

echo '<pre>';
echo 
$archivoCvsSalida;
echo 
'</pre>';

/**
 * Si todo ha ido bien deberíamos ver algo como esto en el navegador:
 * 
 * "Pedro","Caralamaro Periquito","El Cairo","Egipto"
 * "Juan","Altisonante Manrique","Oaxaca","México"
 * 
 * Es decir, tenemos ahora un archivo en que cada una de sus filas representa
 * un registro en una base de datos. Estos datos están separados por comas y
 * hay un registro por cada fila.
 * 
 * Obviamente quien "importe" este archivo hará el resto, es decir, se supone
 * en este caso que contamos con una tabla en una base de datos con los campos
 * correspondientes: nombre, apellidos, ciudad y pais
 * 
 * El "importador" irá recorriendo el archivo línea por línea y añadirá los
 * valores en cada campo tal y como se los presentamos. Es decir, se entiende
 * que el primer valor corresponderá al campo "nombre", el segundo a "apellidos"
 * y así sucesivamente.
 * 
 */

?>
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #6  
Antiguo 24-11-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Otra cosa halizia, no mencionas desde dónde obtienes los datos, pero si los tomas de una consuulta de MySql, recuerda que éste tiene sentencias como SELECT ... INTO OUTFILE especiales para producir CSV y otro tipo de separadores.

// Saludos
Responder Con Cita
  #7  
Antiguo 24-11-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Cita:
Empezado por Román
Otra cosa halizia, no mencionas desde dónde obtienes los datos, pero si los tomas de una consuulta de MySql, recuerda que éste tiene sentencias como SELECT ... INTO OUTFILE especiales para producir CSV y otro tipo de separadores.
Pues lo hubieras dicho antes, leñe, y me hubiera evitado el código de más arriba.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #8  
Antiguo 24-11-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
El código nunca está de más. Pero también recuerda que no sabemos si halizia usa MySql. Es más, ni siquiera sabemos si usa una base de datos.

// Saludos
Responder Con Cita
  #9  
Antiguo 27-11-2006
halizia halizia is offline
Miembro
 
Registrado: abr 2006
Posts: 116
Poder: 18
halizia Va por buen camino
los datos los cojo de una consulta pero no mysql si no postgresql, bueno en realidad es una mezcla de varias consultas, y los resultados los voy almacenando en un array. Voy a probar el código a ver q tal funciona.

Gracias a todos!!
Responder Con Cita
  #10  
Antiguo 27-11-2006
halizia halizia is offline
Miembro
 
Registrado: abr 2006
Posts: 116
Poder: 18
halizia Va por buen camino
Bueno pues debo de ser muy torpe ya que he probado y resulta que me sale todo en una celda no se q hago mal, os mando el código y el resultado.

Muchisimas gracias.

Código PHP:
$res='';
$res=$res." \"".$canal."\",";
for(
$i=0;$i<count($datos);$i++)        
     
$res=$res." \"".$datos[$i][1]."\",";
               
$res .= "\n";  

$sfile="archivo1.xls"
$fp=fopen($sfile,"w");
fwrite($fp,$res);
fclose($fp);
echo 
"<a href='$sfile'>Ver archivo</a>"
Archivos Adjuntos
Tipo de Archivo: zip archivo1.zip (205 Bytes, 20 visitas)

Última edición por halizia fecha: 27-11-2006 a las 13:13:34.
Responder Con Cita
  #11  
Antiguo 27-11-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
No entiendo muy bien si el archivo que adjuntas lo obtuviste directamente con el código que pones pues no veo de dóonde salen los datos binarios. En todo caso, si no mal entiendo lo que intentas hacer, el archivo que produces es un csv y no un xls. Aun cuando Excel pueda leer un csv, imagino que debes especificarle la extensión correcta.

// Saludos
Responder Con Cita
  #12  
Antiguo 27-11-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Y acaso no baste con especificar una extensión de archivo correcta, o sea ".cvs", sino que, lo que habría que hacer desde Excel sería importar el archivo ".cvs", imagino que en la base de datos apropiada. Es decir, ¿acaso va Excel a abrir el archivo ".cvs" y averiguar a qué base de datos corresponden los registros a importar? Yo de Excel no tengo mucha idea, pero, vamos, creo que el paso de "importar archivo CVS" tiene que darse... ¿o no?
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #13  
Antiguo 27-11-2006
[kayetano] kayetano is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Elche
Posts: 644
Poder: 21
kayetano Va por buen camino
Hola

Excel en sus últimas versiones admite tablas HTML, es decir, tu creas un documento HTML donde metes todos los datos en una estructura de tabla y lo guardas con extensión XSL (si no me equivoco) y ya tienes un archivo que se puede abrir sin ningún problema en excel.
__________________
Salu2
KAYETANO

Cómo hacer preguntas de manera inteligente
Responder Con Cita
  #14  
Antiguo 27-11-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Hola dec, no entiendo bien a qué te refieres. Un CSV (que no CVS) es un archivo plano que nada tiene que ver con una base de datos. Pero esto tú lo sabes puesto que pusiste el ejemplo. En él, volcabas el resultado en el navegador, pero igualmente podías producir un archivo en disco. Ese archivo es plano, y basta que le pongas la extensión csv para que Excel lo lea correctamente.

Ahora, volviendo a la ley del mínimo esfuerzo, ¿no tendrá postgre algo similar a mysql?

// Saludos
Responder Con Cita
  #15  
Antiguo 27-11-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Yo voto porque PostGre tenga algo como MySQL, sí. Pero, de todas formas, a ver si me explico. Yo sé lo que es (aunque no perfectamente) un archivo "CVS", pero, por lo que sé entiendo que este tipo de archivos no son "de Excel", es decir, pueden usarse y se usan en otras aplicaciones.

Entonces, me digo, si el compañero quiere importar a Excel en concreto el archivo ".cvs" que genere, ¿no tendrá que hacer "algo" antes? Es decir, me refiero a después de tener el archivo ".cvs", ¿no tendría que importarlo en Excel? Es lo que yo pienso, vaya.

Ahora, que puede que me equivoque y Excel pueda abrir archivos ".cvs" sin más y tratarlos, etc., pues también puede ser... de hecho no me extrañaría nada.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #16  
Antiguo 27-11-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Hago un paréntesis para citarme a mi mismo

Cita:
Empezado por mimismo
Un CSV (que no CVS)
Regresando al punto. Sí, Excel, al menos desde hace unas cuantas versiones, puede importar archivos csv sin necesidad de que se lo digas explícitamente mediante un comando importar...Al abrir el csv, Excel en automático usa su rutina de importación.

// Saludos
Responder Con Cita
  #17  
Antiguo 27-11-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

A no, ¿Eh? Eso sí que no... o CVS, o CSV, a ver si nos ponemos de acuerdo porque si no, no me aclaro.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #18  
Antiguo 27-11-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Comma Separated Values



// Saludos
Responder Con Cita
  #19  
Antiguo 27-11-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Comma Values Separated

__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #20  
Antiguo 27-11-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Pero en inglés eso no tiene sentido, o en todo caso significaría algo como

Valores coma, separados

Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Exportar a Excel desde builder 6.0 damian2000 C++ Builder 9 22-06-2016 19:18:56
Exportar .gdb a Excel Novata2006 Firebird e Interbase 0 16-05-2006 11:52:08
exportar a excel ? Enrique Impresión 2 01-09-2004 01:18:47
Exportar desde BDE a Excel tamara Servers 1 04-10-2003 00:05:02
Exportar desde Tabla BDE a Excel tamara Conexión con bases de datos 1 03-10-2003 19:20:03


La franja horaria es GMT +2. Ahora son las 01:59:09.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi