Foros del Web » Programando para Internet » PHP »

Generar xls con datos del sql y tabs

Estas en el tema de Generar xls con datos del sql y tabs en el foro de PHP en Foros del Web. Hola! Tengo que generar a partir de un select, datos para un archivo excel, pero a su vez el mismo debe contener tabs. Voy al ...
  #1 (permalink)  
Antiguo 17/04/2008, 15:00
 
Fecha de Ingreso: enero-2008
Mensajes: 63
Antigüedad: 16 años, 3 meses
Puntos: 0
Generar xls con datos del sql y tabs

Hola!
Tengo que generar a partir de un select, datos para un archivo excel, pero a su vez el mismo debe contener tabs.
Voy al ej. concreto para que se entienda, tengo que extraer info de una tabla (campo1, campo2, campo3, campo4) y por cada campo4 mostrar el resto de los campos en un tab diferente...
Con el siguiente codigo logro simplemente convertir el select al xls, pero no lo de los tabs

$select = "SELECT campo1, campo2, campo3, campo4 FROM tabla order by campo4";
$export = mysql_query($select);
$fields = mysql_num_fields($export);
$header = "";
$data = "";
for ($i = 0; $i < $fields; $i++) {
$header .= mysql_field_name($export, $i) . "\t";
}
while($row = mysql_fetch_assoc($export)) {
$line = '';
foreach($row as $value) {
if ((!isset($value)) OR ($value == "")) {
$value = "\t";
} else {
$value = str_replace('"', '""', $value);
$value = '"' . $value . '"' . "\t";
}
$line .= $value;
}
$data .= trim($line)."\n";
}
$data = str_replace("\r","",$data);
if ($data == "") {
$data = "\n(0) Registros Encontrados!\n";
}
header("Content-type: application/x-msdownload");
header("Content-Disposition: attachment; filename=cliente" . time() .".xls");
header("Pragma: no-cache");
header("Expires: 0");

Seguramente por cada cambio de campo4 deba crear un tab, no??
Alguien me puede ayudar?

Gracias!

Edith
  #2 (permalink)  
Antiguo 17/04/2008, 15:05
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: Generar xls con datos del sql y tabs

Hola etej,

Con el código que publicas no podrás hacerlo, necesitas usar una clase más grande como PEAR::Excel_Writer.

Saludos.
  #3 (permalink)  
Antiguo 17/04/2008, 15:06
 
Fecha de Ingreso: enero-2008
Mensajes: 63
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Generar xls con datos del sql y tabs

Gracias! Me pondre a investigar
  #4 (permalink)  
Antiguo 29/04/2008, 12:39
 
Fecha de Ingreso: enero-2008
Mensajes: 63
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Generar xls con datos del sql y tabs

GatorV, con tu respuesta del otro dia pude implementar correctamente lo que necesitaba.
Pero ahora necesito ir un paso mas! A ver si me podes ayudar. Hice un script que me genera el xls con los datos del sql, pero me pide donde guardarlo (el directorio), el nombre del archivo se lo indico en la funcion send de la clase.
El problema es que necesitaba generar otro script que se ejecutara diariamente y llamará al script que confecciona el xls, arma un mail y lo adjunta, para lo cual necesitaria grabar temporalmente el archivo en una carpeta que le indique por codigo, ya que el usuario no interviene. Este ultimo script se pone en el cron.
Pero bueno, no me permite indicarle en el send ni en la creacion del objeto el path completo.

Alguna manera de solucionarlo o tendre que usar otra cosa??

Muchas gracias, tengo urgencia de buscar una solucion!
Saludos

Edith
  #5 (permalink)  
Antiguo 29/04/2008, 14:30
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: Generar xls con datos del sql y tabs

Hola etej,

Puedes usar las funciones de salida de PHP para capturar la salida del XML, usando por ejemplo ob_start y ob_get_clean, así podrás guardar el archivo en el servidor con fopen / fwrite.

Saludos.
  #6 (permalink)  
Antiguo 30/04/2008, 05:49
 
Fecha de Ingreso: enero-2008
Mensajes: 63
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Generar xls con datos del sql y tabs

Disculpame, pero me podrias dar una mano de como usarlo? He mirado el ejemplo que proporciona el manual de php pero no me queda claro.
En mi ejemplo:

function generaExcel ($path) {
$libro = new Spreadsheet_Excel_Writer();
$hoja =& $libro->addWorksheet('Hoja 1');

.... Agregado de la info a la planilla

$libro->send('ejemplo.xls');
$libro->close();
}

La variable pasada por parametro $path deberia ser la que se use para indicar el directorio destino de ejemplo.xls. Vos decis de eso interceptarlo con ob_start?

Por otro lado estuve mirando el codigo de la funcion send de la clase writer.php:
function send($filename)
{
header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=\"$filename\"");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0,pre-check=0");
header("Pragma: public");
}

Si bien no entiendo de header http, con el header location no alcanzaria para resolver lo que me falta?
Supongamos que el $path es una url del estilo: www.misitio.com/edith

Gracias porque realmente estoy trabada y necesito avanzar urgente!!!

Edith
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 09:03.