Foros del Web » Programando para Internet » PHP »

Convertir una consulta de datos en un archivo de excel

Estas en el tema de Convertir una consulta de datos en un archivo de excel en el foro de PHP en Foros del Web. Hola! Soy muy nueva en esto de la programacion php y mysql......les comento: He desarrollado una aplicacion en php de registros de facturas, pero me ...
  #1 (permalink)  
Antiguo 24/04/2009, 13:07
 
Fecha de Ingreso: abril-2009
Mensajes: 5
Antigüedad: 15 años
Puntos: 0
Sonrisa Convertir una consulta de datos en un archivo de excel

Hola!
Soy muy nueva en esto de la programacion php y mysql......les comento:

He desarrollado una aplicacion en php de registros de facturas, pero me piden ahora que a la hora de hacer la consulta de facturas, por una fecha determinada, pueda tener una opcion en la cual pueda convertir esa consulta en un archivo de excel o una hoja de calculo, puede ser en open office.

La verdad no tengo idea de como hacerlo, sé que el servidor de mysql, Xamp, tiene la opcion de exportar los datos en varios formatos, entre eso excel.

Agradezco el tiempo y las respuestas.

Buen dia!
  #2 (permalink)  
Antiguo 24/04/2009, 13:21
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Convertir una consulta de datos en un archivo de excel

:P Talvez esto te sirva:
http://www.forosdelweb.com/f18/aport...-excel-640937/
  #3 (permalink)  
Antiguo 24/04/2009, 13:51
 
Fecha de Ingreso: abril-2009
Mensajes: 5
Antigüedad: 15 años
Puntos: 0
Sonrisa

Gracias!....

Lo miraré y les estaré contando, al parecer si es lo que necesito......es algo asi como exportar datos.

Buen dia!

Hola de nuevo!

Pues mira que si me sirvió y mucho, esto fué lo que hice:

En un archivo que llamé funciones.php coloqué la class Excel():

Código PHP:
<?
/*
 * CLASS
 */
class Excel {

    private 
$file;
    private 
$row;

    
/*
     * Constructor
     */
    
function __construct(){
        
$this->file $this->__BOF();
        
$row 0;
    }

    
/*
     * Inicio del fichero
     */
    
private function __BOF() {
        return 
pack("ssssss"0x8090x80x00x100x00x0);
    }

    
/*
     * Final del fichero
     */
    
private function __EOF() {
        return 
pack("ss"0x0A0x00);
    }

    
/*
     * Escribe un número en una fila y columna
     */
    
private function __writeNum($row$col$value) {
        
$this->file .= pack("sssss"0x20314$row$col0x0);
        
$this->file .= pack("d"$value);
    }

    
/*
     * Escribe un string en una fila y columna
     */
    
private function __writeString($row$col$value ) {
        
$L strlen($value);
        
$this->file .= pack("ssssss"0x204$L$row$col0x0$L);
        
$this->file .= $value;
    }

    
/*
     * Escribe un valor en una fila y columna, este método decide si será un número o un string.
     */
    
private function writeCell($value,$row,$col) {
        if(
is_numeric($value)) {
            
$this->__writeNum($row,$col,$value);
        }elseif(
is_string($value)) {
            
$this->__writeString($row,$col,$value);
        }
    }

    
/*
     * Añadir datos de una fila
     */
    
public function addRow($data,$row=null) {
        
$columns count($data);

        if(!isset(
$row)) {
            
$row $this->row;
            
$this->row++;
        }
        for(
$i=0$i<$columns$i++) {
            
$cell $data[$i];
            
$this->writeCell($cell,$row,$i);
        }
    }

    
/*
     * Añadir datos de una tabla
     */
    
public function addTable($data) {
        
$rows count($data);

        for(
$j=0;$j<$rows;$j++){

            
$row $this->row;
            
$this->row++;

            
$columns count($data[$j]);

            for(
$i=0$i<$columns$i++) {

                
$cell $data[$j][$i];
                
$this->writeCell($cell,$row,$i);

            }
        }
    }

    
/*
     * Genera un fichero para descargar en memoria
     */
    
public function download($filename) {
        
header("Pragma: public");
        
header("Expires: 0");
        
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
        
header("Content-Type: application/force-download");
        
header("Content-Type: application/octet-stream");
        
header("Content-Type: application/download");;
        
header("Content-Disposition: attachment;filename=$filename ");
        
header("Content-Transfer-Encoding: binary ");
        
$this->write();
    }

    
/*
     * Escribe el contenido del fichero
     */
    
public function write() {
        echo 
$file $this->file.$this->__EOF();
    }

}

?>
Luego en mi programa de procesos hice lo siguiente:

Código PHP:
<?
  $fecha_consulta
=($_POST['fecha_consulta']);
  if (empty(
$nit_cliente))
     {
      
Header("Location: Error_consulta_id_vacio.php?");
      exit;
     }
     
$dbi=Conectarse($dbhost$dbuname$dbpass,$dbname);
     
$cueri "SELECT * FROM facturas WHERE fecha_consulta=$fecha_consulta";
     
$result=mysql_query($cueri,$dbi);
     if (
$row=mysql_fetch_array($result))
        {
         
mysql_field_seek($result,0);
         
$xls = new Excel();
         
$xls->addRow(Array("Id Factura","Documento","Cliente","Suscripcion","Cupon pago","Fecha Sin Recargo","Fecha Con Recargo","Periodo consumo","Total cobro","Total Vencido","Total Pagar","Notas","Estado","Proveedor","Nit Cliente","Fecha Consulta"));
         do {
         
             
$xls->addRow(Array($row["id_factura"],$row["documento"],$row["cliente"],$row["suscripcion"],$row["cupon_pago"],$row["fecha_sin_recargo"],$row["fecha_con_recargo"],$row["periodo_consumo"],$row["total_cobro"],$row["total_vencido"],$row["total_pagar"],$row["notas"],$row["estado"],$row["provedor"],$row["nit_cliente"],$row["fecha_consulta"]));
             
            } while (
$row mysql_fetch_array($result));
            
$xls->download("procesar.xls");
        }
        else
         {
           
Header("Location: error_no_registros.php?");
         }
         
mysql_close($dbi);
?>
Y pues me ha funcionado.......muchas gracias

Última edición por GatorV; 24/04/2009 a las 15:04
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 19:11.