Foros del Web » Programando para Internet » PHP »

Script para exportar a columnas de Excel

Estas en el tema de Script para exportar a columnas de Excel en el foro de PHP en Foros del Web. Holas. La cuestión está así: he modificado un script de PHP por ahí que tengo en un CMS , para que tome información de dos ...
  #1 (permalink)  
Antiguo 22/06/2010, 23:00
Avatar de CraToS  
Fecha de Ingreso: diciembre-2008
Ubicación: Alajuela, CR
Mensajes: 24
Antigüedad: 15 años, 4 meses
Puntos: 0
Script para exportar a columnas de Excel

Holas.


La cuestión está así: he modificado un script de PHP por ahí que tengo en un CMS, para que tome información de dos tablas diferentes de la base de datos de ese CMS, y los exporta a un archivo .CSV, acomodados en sus respectivas filas, y sus columnas separadas por comas.

Todo funciona perfectamente de hecho.


Lo que quisiera ahora darle el toque final al script para que se exportara más bien en un .XLS de una vez acomodado en sus respectivas columnas, en lugar de estar separados por comas. (Esto es, para evitarle al cliente tener que saber cómo acomodar el Texto en columnas en Excel).

Pongo aquí la parte más importante del script:

Código PHP:
Ver original
  1. ...
  2.  
  3.     $SQL = "
  4.                        SELECT db_usuarios.*,db_perfil.*
  5.                        FROM db_usuarios,db_perfil
  6.                        WHERE db_usuarios.id=db_perfil.id
  7.                    " ;
  8.     $database->setQuery($SQL);
  9.     $ROWS = $database->loadObjectList();
  10.  
  11.     header( "Content-type: text/csv" );
  12.     header('Content-Disposition: attachment; filename="Lista de Usuarios.csv"');
  13.  
  14.         //Encabezados
  15.         echo 'Nombre';
  16.         echo ",";
  17.         echo 'Apellido';
  18.         echo ",";
  19.         echo 'Email';
  20.         echo ",";
  21.         echo 'Fecha de Cumpleaños';
  22.        
  23.         echo "\r\n";
  24.        
  25.         // Se genera el loop para cada fila de la base de datos y que toma el valor requerido
  26.     foreach ($ROWS as $ROW)
  27.     {
  28.        
  29.         echo $ROW->firstname;
  30.         echo ",";
  31.         echo $ROW->lastname;
  32.         echo ",";
  33.         echo $ROW->email;
  34.         echo ",";
  35.         echo $ROW->cumpleaños;    
  36.         echo "\r\n";
  37.     }
  38. die();
  39. }
  40.  
  41. ...

Por ahí googoleando toda la noche me encontré con esto:

http://www.the-art-of-web.com/php/dataexport/


Ando buscando cómo adaptar algo de lo que viene ahí para que se aplique a lo que ocupo. Es decir, transformar algo como esto:

Código PHP:
Ver original
  1. function cleanData(&$str)
  2.     {
  3.         $str = preg_replace("/\t/", "\\t", $str);
  4.         $str = preg_replace("/\r?\n/", "\\n", $str);
  5.         if(strstr($str, '"')) $str = '"' . str_replace('"', '""', $str) . '"';
  6.     }
  7.  
  8.  
  9.      # filename for download
  10.      $filename = "Usuarios.xls";   
  11.    
  12.      header("Content-Disposition: attachment; filename=\"$filename\"");
  13.      header("Content-Type: application/vnd.ms-excel");
  14.        
  15.      $flag = false;    
  16.      foreach($ROWS as $row)
  17.      {
  18.          if(!$flag)
  19.          {
  20.              # display field/column names as first row
  21.              echo implode("\t", array_keys($row)) . "\n";
  22.              $flag = true;
  23.          }
  24.      
  25.      array_walk($row, 'cleanData');
  26.      echo implode("\t", array_values($row)) . "\n";
  27.     }
Asumo que debe tener algo que ver con en el array que debo armar a partir de mis propias filas de las tablas de la base de datos ya que lo que explican ahí es con un array bien definido, y el array con el que estoy lidiando es indefinido por cuanto la cantidad de usuarios puede variar constantemente, no sé si me explico.

Si alguien tienen una idea se lo agradecería!


Saludos

Última edición por CraToS; 23/06/2010 a las 00:04
  #2 (permalink)  
Antiguo 23/06/2010, 07:59
 
Fecha de Ingreso: septiembre-2009
Mensajes: 124
Antigüedad: 14 años, 7 meses
Puntos: 3
Respuesta: Script para exportar a columnas de Excel

Negro, no te compliques la existencia, tira un bucle desde la base de datos y metelo en una tabla.
Despues, haces que descargue el archivo .xls (generado por vos) y listo, tenes el excel. Nada de clases que complican el vivir de cada dia

Etiquetas: columnas, excel
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 02:06.