Error abrir fichero xls office 2007

Estoy haciendo un servicio web en php, y lo estoy realizando con NUSOAP y dentro de este servicio tengo que generar un fichero con extensión xls para cargar una tabla que he leído previamente de mysql. El fichero excel lo genero con la clase excel-writer.inc.php.
El fichero lo genera correctamente pero cuando intento abrirlo 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 habrá sin ningún mensaje
muchas gracias
un saludo

1 respuesta

Respuesta
1
Lo que puede ocurrir es que al enviar la cabecera del fichero no se especifiquen las dos posibilidades. Lamentablemente parece que algunos exploradores entienden una cabecera y otros como IE y Opera otra.
Asegúrate que se envían estas dos:
header('Content-Type: application/vnd.ms-excel;');
header("Content-type: application/x-msexcel");
Hola
He puesto las dos cabecera que me has enviado y continua saliendo el mesmo mensaje.
Las cabeceras que tengo son:
header('Content-Type: application/vnd.ms-excel;');
header("Content-type: application/x-msexcel");
header("Content-Type: application/force-download");
header("Content-Disposition: filename=\"xxx.xls\";");
header("Pragma: no-cache");
header("Expires: 0");
header("location:./fichero/xxx.xls");
Muchas gracias por tu contestación
Un saludo
Prueba añadiendo estas dos más:
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
Las he añadido y sigue con el mismo problema. Perdona que insista tanto pero no soy capaz de saber porque sale este mensaje.
El problema no esta en que no me salga la pantalla para que el fichero lo descargue o lo pueda abrir, sino cuando doy al botón abrir se me abre el office 2007 y me sale ese error, y no se por que sale ni como hacer para que cuando abra el excel lo haga sin problemas.
El fichero lo estoy intentando descargar desde internet explorer 7. Ademas el office 2007 debería abrir el fichero sin sacar ningún mensaje.
He intentago guardarlo como con compatibilidad con excel 2003 y así si que me lo abre sin ningún problema, No se que me puede faltar a mi fichero para que sea compatible
Por favor a ver si me puedes orientar porque estoy perdidísimo.Si necesitas más información comunícamelo
Muchas gracias por tu ayuda
Un saludo
Hombre, haber empezado por ahí:
Si lo creas con office 2007, la extensión debería ser .xlsx y no .xls
Esto es exactamente lo que dice el error: que la extensión no es la correcta.
Eso es correcto pero es que el fichero que creo con php debe ser con extensión xls no con extensión xlsx y lo que intento es abrir el fichero xls con office 2002
Pues entonces te recomiendo que lo guardes con Office 2002 o que uses Guardar Como con 2007 y escojas la opción más compatible.
El problema es que luego ese fichero excel se ba a usar para importarlos como un a base de datos excel.
Es posible que cuando genero el fichero con excel writer me lo genere en formato html y cuando lo intenta abrir el office 2007 reconozca que no es un formato correcto.
¿Se podría escribir ese mismo fichero en formato binario para así que lo abriera correctamente? ¿Cómo escribo un fichero xls en binario?
Muchas gracias y disculpa la insistencia, es que tengo que darle una solución y que funcione
Un saludo
De hecho es al contrario: excel writer te lo debe escribir en binario y quizás en una versión que es la que no reconoce el que lo abre.
En lugar de eso, si la tabla no tiene formatos complicados o imágenes, puedes probar a crear el fichero simplemente como una tabla HTML y probablemente será más 'compatible'.
Prueba:
<?php
echo "
<table>
<tr>
<td>Una casilla</td>
<td>Otra casilla</td>
</tr>
";
echo "
<tr>
<td>123</td>
<td>456</td>
</tr>
</table>
";
?>
El excel writer que tengo me lo he bajado de php clases el autor es
/*
###############################################
#### ####
#### Author : Harish Chauhan ####
#### Date : 31 Dec,2004 ####
#### Updated: ####
#### ####
###############################################
Este es el que estoy usando pero igual no es el correcto ya que soy un novatp en esto. Si no es el correcto te rogaría que me indicaras cual es el que me debo bajar.
Con respecto a lo que me indicas esa prueba ya lo hice y no me sirve porque sigue saliendo el mismo error.
Yo creo que estoy haciendo algo mal. Te adjunto un trozo de código para que me lo confirmes si voy por el buen camino
include_once('./excel-writer/excelwriter.inc.php');
$excel=new ExcelWriter("./fichero/xxx.xls");
if($excel==false)
{
$error="No se puede abrir el fichero";
}else
{
//Escribimos la primera fila con las cabeceras
$myArr=array("ID","EMAIL","NOMBRE","APELLIDO","SEXO",
"edad","hijo menor 14","numero hijos",
"edad hijo 1", "edad hijo 2","edad hijo 3",
"usas medicamentos", "aparato locomotor",
"gripe resfriado", "alergia","ansiedad",
"detoxificacion","otros","familia usa medicamntos",
"viajar","cine","deporte","lectura","naturaleza",
"FECHA BAJA","FECHA ALTA","ESTADO");
$excel->writeLine($myArr);
//$fecha = date("d-m-Y");
$query_reg = sprintf("SELECT * FROM newsletter");
$c_reg = mysql_query($query_reg) or die(mysql_error());
while($row_reg = mysql_fetch_array($c_reg))
{
include_once('nlconstantes.php');
$myArr=array
(
$row_reg['Id'],
$row_reg['email'],
$row_reg['nombre'],
$row_reg['apellido']
);
$excel->writeLine($myArr);
}
$excel->close();
Un saludo
En este trozo de código no se aprecia ninguna incorrección.
Así que si hay algún fallo, no es aquí.
¿Hay alguna forma de escribir un fichero xls de forma nativa? ¿Y en modo binario?
Muchas gracias
Un saludo
Para escribirlo de forma nativa deberías usar alguna librería como PEAR.
http://pear.php.net/package/Spreadsheet_Excel_Writer

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas