Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/11/2010, 14:56
Avatar de WingzemonX
WingzemonX
 
Fecha de Ingreso: noviembre-2010
Mensajes: 75
Antigüedad: 14 años, 4 meses
Puntos: 3
Problemas al crear un Archivo Excel con PHP

Saludos, estoy desarrollando en mi trabajo una aplicación Web con PHP y MySQL, que te muestra diferentes reportes semanales, que se van subiendo, evidentemente, cada semana, y te los muestra. Ahora me han pedido que no sólo se puedan ver en Internet, sino que también se puedan descargar en formal de Microsoft Office Excel. Es decir, pro ejemplo, que te muestre la tabla, y arriba en una esquina la opción de descargarlo en archivo xls.

En mi experiencia sé que con C# .NET se puede hacer muy fácil, pero con PHP aun tengo msi dudas. Lo hago de la siguiente manera:

Código PHP:
<?php
header
("Content-type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
header("Content-Disposition: attachment; filename= Prueba.xls");
header("Content-Transfer-Encoding: binary");
header("Pragma: no-cache");
header("Expires: 0");
?>
<table>

<!---Codigo PHP + HTML para crear la tabla--->

</table>
Y si me crea el archivo Excel, si lo descarga, y si me muestra las cosas como quiero. Pero me han surgido dos problemas que no he sabido como modificar:

PROBLEMA 1:
Al Descargar el archivo creado, con extensión xls, siempe me parece una ventana de error que dice:

"El Archivo que intenta abrir, 'Prueba.xls', tiene otro formato que el especificado pro la extensión de archivo. compruebe que el archivo no está dañado y procede de un origen de confianza antes de abrirlo, ¿Desea abrir el archivo ahora?"


Y al hacer clic en sí, me lo abre, pero es algo incomodo, en especial porque este archivo de excel lo descargara tambien gente externa y como que da mala imagen, y eso te aparece cada vez que quieres abrirlo. Intente cambiar la extensión:

[PHP]
Código PHP:
<?php
header
("Content-type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
header("Content-Disposition: attachment; filename= Prueba.xlsx");
header("Content-Transfer-Encoding: binary");
header("Pragma: no-cache");
header("Expires: 0");
?>
Pero ahora en lugar de eso, me surge OTRO error que dice:

"Excel no puede abrir el archivo 'Prueba.xlsx' porque el formato o la extensión de éste no son válidos. Compruebe que el archivo no se ha dañado y que la extensión del mismo coincide con el formato del archivo"


Y ahi si ya no me deja abrirlo. ¿Como puedo solucionar esto?





PROBLEMA 2:
Revisando me acabo de dar cuenta de un problema pero ahora entre el Office con diferentes idiomas. Por ejemplo, en la tabla yo hago:

Código PHP:
 <td align="right" bgcolor="#66CCFF" nowrap="nowrap"><b>=SUM(C3:C<?php echo $nlot 2?>)</b></td>
De tal forma que me queda algo como =SUM(C3:C10) en esa celda que es la suma de una columna. La cuestión es que esto solo me sirve si abro el archivo con un office en ingles, si lo abro con uno en español, obviamanete no me reconoce la funcion "SUM" ya que él conoce "SUMA". ¿Hay alguna forma más practica de solucionar este conflicto?


Muchas gracias de atemano,