PHP - archivos excel

 
Vista:

archivos excel

Publicado por juliocesar (5 intervenciones) el 04/07/2005 21:39:14
Que tal tengo el siguiente problema. Creo el siguiente archivo de excel con los resultados de una consulta a mysql:

$archivo="archive.xls";
$busca=mysql_query("SELECT nombre_emp,sec_act_emp,calle_emp,id_emp,id_edo FROM empresa");
while ($row = mysql_fetch_row($busca))
{
$a="$row[0]";

$a.=",$row[1]";
$a.=",$row[2]";
$a.=",$row[3]";
$a.=",$row[4] \n";
echo"Aqui estan los resultados";
echo $a;
$p=fopen("$archivo","w+");
if($p)
{
fputs($p,$a);
}
}
fclose($p);
echo "<a href=$archivo>Ver archivo</a>"

Este script esta bien pero me regresa todos los datos en la primera columna de excel alguien tien una idea de como hacer que los resultados se almacenen en celdas diferentes. Gracias...El script lo pueden correr para que vean el resultado y se den una idea de los que les digo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:archivos excel

Publicado por Mike79 (669 intervenciones) el 05/07/2005 06:12:18
No pues ya ni yo.
Para empezar no puedo correr tu script, por que no tengo la tabla, pero bueno ya vi como generas tu "archivo", hize uno como lo generas, separado por comas y bueno yo no uso Office, uso openoffice, ¿y te digo algo?, me lo abre como un documento de texto, ni siquiera como una hoja de calculo.

Para empezar, un documento de excel no es separado por comas y "enters". ¿Quien te dijo semejante mentira?, eso es un archivo .csv. Que excel lo puede importar, si es verdad, casi todas las versiones de excel, si las instalas en "default" o estandar o como quieras decirle, se instalan con soporte para archivos .csv.

Pero, me temo mi estimado amigo, que eso no es un archivo de excel, es un archivo .csv y si le pones extensión .csv excel te lo abre muy bien (hasta donde tengo entendido).

Por lo pronto yo renombre mi archivo de .xls a .csv y mi openoffice me lo abrio sin ningún problema.

Saludos!
-
Miguel Angel
Mike79
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Aclaracion

Publicado por Mike79 (669 intervenciones) el 05/07/2005 17:46:34
Me dejaste con la duda, así que anoche me consegui una copia de excel 9 (del office 2000), e hize un par de pruebas.

Un archivo CSV separado por tabuladores (codigo ascii 9) en lugar de comas, y renombrado a .xls, puede ser abierto por excel sin ningún problema.

Entonces la corrección a tu codigo original seria ó bien como te habia dicho anteriormente de renombrar el archivo a .csv:

$archivo="archive.csv";

O cambiar las comas por el codigo ascii chr(9):

$a= "$row[0]";
$a.= chr(9)."$row[1]";
$a.= chr(9)."$row[2]";
$a.= chr(9)."$row[3]";
$a.= chr(9)."$row[4] \n";

Si bien las dos son soluciones validas, te recomiendo la primera opción, ya que en las pruebas que hice, cuando renombras un archivo csv a xls y lo abres en excel, lo modificas y luego lo vuelves a guardar, sigue guardandose internamente como csv, aunque su ext. sea xls, por lo tanto, vas a estar manejando archivos que internamente no corresponden con su descripción.

Talvez no veas la importancia de esto, pero creeme, es muy importante tener los archivos bien nombrados. Imaginemos que el usuario de repente quiere cargar estos xls en otro medio que no tenga excel, por ejemplo, un celular, una palm, una mac, linux, etc.

Muchos de los programas para no decir que ningun otro aparte de excel va a entender el archivo correctamente. En mi caso muy particular yo uso open office y los archivos xls los abre bien como hoja de calculo, pero el archivo que tu generas lo abre como un documento de texto, sin embargo un archivo .csv lo abre perfectamente bien como una hoja de calculo.

Por lo tanto, GENERA CSV.

Saludos!
-
Miguel Angel
Mike79
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar