Jump to content

pasando consulta sql a excel


Recommended Posts

Esto lo tienen que adaptar a lo que ustedes quieran implementar.. Esta en ingles porque lo hice pa un gringo,, no tiempo tiempo pa traducir sorry,,,,

 

//**************** inicio

echo "<center><b>Biotech companies by town</b></center>";

$shtml="<center><b>Biotech companies by town</b></center>"; //

echo "<table align='center'><tr><th>Town</th><th>Amount</th></tr>";

$shtml=$shtml."<table align='center'><tr><th>Town</th><th>Amount</th></tr>";

$consulta=mysql_db_query($bd_base,"SELECT city.city_name,count(directory_company.com_number ) AS cuenta FROM directory_company RIGHT JOIN city ON city.city_key=directory_company.city_key GROUP BY city.city_key ORDER BY cuenta DESC,city.city_name") or die (mysql_error());

 

while ($row=mysql_fetch_array($consulta)){

$ciudad=$row[0];

$cantidad=$row[1];

echo "<tr><td>$ciudad</td><td align='center'>$cantidad</td></tr>";

$shtml=$shtml."<tr><td>$ciudad</td><td align='center'>$cantidad</td></tr>";

}//cerrando el while

echo "</table>";

$shtml=$shtml."</table>";

$scarpeta="../bodega_imagenes_dinamicas"; //carpeta donde guardar el archivo (puede tener cualquier nombre)

$sfile=$scarpeta."/report.xls"; //ruta del archivo a generar

$fp=fopen($sfile,"w"); //abro el archivo, la w es por write, quiere decir que lo voy a escribir

fwrite($fp,$shtml); // le meto al archivo lo que contiene la variable $shtml

fclose($fp); // cierro el archivo

echo "<br><br><a href='../bodega_imagenes_dinamicas/report.xls'><center><b>Download report</b></center></a>"; //enlace pa bajar el archivo

//*********

 

 

//***************** fin

 

Si se fijan, hay una variable que se llama $shtml (puede tener cualquier nombre)... esa va tomando todo lo que se va a pasar a excel... si se fijan despues de cada echo,, $shtml agrega eso mismo a su contenido... con la tabla de html incluida...

 

Para la carpeta donde va a parar el excel, tienen que darle permisos para que se pueda escribir archivos en ella,, si no me falla el cereuro, se llaman permisos 007,, por si quieren buscar eso en san google...

 

Aca estamos trabajando con una consulta media complicá...

 

$consulta=mysql_db_query($bd_base,"SELECT city.city_name,count(directory_company.com_number ) AS cuenta FROM directory_company RIGHT JOIN city ON city.city_key=directory_company.city_key GROUP BY city.city_key ORDER BY cuenta DESC,city.city_name") or die (mysql_error());

 

La tienen que cambiar por una acorde al conocimiento de cada uno,, puede ser hasta SELECT * FROM cliente,, y chao,,, igual les va a funcionar...

 

Que creen ustedes ke pasa si pongo <td bg color='red'> ??? Como quedara al ver el excel ??? Tarea pa la casa...

 

Espero ke al menos den las gracias po,, pa ke me den ganas de seguir ayudando... sino les voy a mandar el material a unos pocos por PM (asi se llama creo) y chao...

 

 

Link to comment
Share on other sites

  • 2 months later...
  • 3 weeks later...

Hola kpadre

 

al igual que mango no cache mucho el codigo

 

Pero muchas gracias, voy a pegarle una revisa para entenderlo

 

Saludos

 

cualquier duda por ultimo copia y pega el codigo que estes haciendo y te ayudamos entre todos...

Link to comment
Share on other sites

  • 2 years later...

voy a donar el mio que esta más optimizado ya que crea las columnas de forma dinámica

solo hace falta el nombre de la tabla

 

 

<?

header("Content-type: application/vnd.ms-excel");

header("Content-Disposition: attachment; filename=registros.xls");

//Tabla dinámica Eric Birkner 2008

 

include('../config.php');

 

$sql = "show columns from registros";

$res = mysql_query($sql);

$campos = mysql_num_rows($res);

 

echo $campos;

 

$head = '<tr>';

while($lst = mysql_fetch_array($res)){

$head.= "<th>".$lst[0]."</th>";

 

}

$head.= '</tr>';

 

 

$sql2 = "select * from registros";

$res2 = mysql_query($sql2);

 

 

 

while($value = mysql_fetch_array($res2)){

 

$lst_usuario .= '<tr>';

for($i=0;$i<$campos;$i++){

$lst_usuario .= '<td>'.$value[$i]. '</td>';

}

$lst_usuario .= '</tr>';

}

 

 

 

print "<table border=1>".$head.$lst_usuario."</table>";

?>

Edited by Eric_Raven
Link to comment
Share on other sites

  • 1 month later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...