La Web del Programador: Comunidad de Programadores
 
    Pregunta:  60887 - SERVICIO WEB QUE GENERA XLS
Autor:  Ivan Garcia
Hola
Estoy haciendo un servicio web en php, y lo estoy realizando con NUSOAP y dentro de este servicio tengo que generar un fichero con extension xls para cargar una tabla que he leido previamente de mysql. El fichero excel lo genero con la clase excel-writer.inc.php.
El fichero lo genera correctamente pero cuando intento abirlo con Ms-Office 2007 me sale el siguiente mensaje:

'El archivo que intenta abrir "xxxxxx.xls" tiene otro formato que el especificado por la extension de archivo. Compruebe que el archivo no esta dañado y procede de un origen de confianza antes de abrirlo ¿desea abrir el archivo ahora?'

Lo que necesito saber es que tengo que hacer para que ese mensaje desaparezca cuando intento abrir el fichero y me lo habra sin ningun mensaje

muchas gracias

un saludo

  Respuesta:  Carl Go
Hola.

Yo utilizo la siguiente rutina y me sirve a la perfección. si lo desea pues revísela y adáptela a lo que necesita, y estoy seguro le va a corre bien... Por cierto yo tengo la suite MS Office 2003 y mis archivos generados por PHP abrir sin ningún problema.

Saludos.
_________________________________________

<?php
header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=result.xls");
header("Pragma: no-cache");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Expires: 0");

/*
http://www.lawebdelprogramador.com
*/
?>

<table border=0>
<tr>
<td style='font-weight:bold;font-size:1.3em;'>Gastos</td>
<td style='font-size:1.2em; width:60px;'>2000</td>
<td style='font-size:1.2em; width:60px;'>2001</td>
<td style='font-size:1.2em; width:60px;'>2002</td>
</tr>
<tr>
<td style='color:#00f;'>Viajes</td>
<td>40,60</td>
<td>43,40</td>
<td>39,80</td>
</tr>
<tr>
<td style='color:#00f'>Comidas</td>
<td>6,5</td>
<td>6,5</td>
<td>3,3</td>
</tr>
<tr>
<td style='color:#00f'>Alojamiento</td>
<td>7,2</td>
<td>7,8</td>
<td>3,2</td>
</tr>
<tr>
<td style='color:#00f'>Totales</td>
<td style='background:#CFD2D8; border-top:1px solid; border-bottom:1px solid; border-left:1px solid;'>=suma(b2:b4)</td>
<td style='background:#CFD2D8; border-top:1px solid; border-bottom:1px solid;'>=c2+c3+c4</td>
<td style='background:#CFD2D8; border-top:1px solid; border-bottom:1px solid; border-right:1px solid;'>=suma(d2:d4)</td>
</tr>
</table>
?>