Evitar mensaje Excel 2007/2010 «El archivo que intenta abrir tiene otro formato que el especificado por la extensión del archivo»

En un proyecto de migración a Office 2010 me he encontrado este problema.

En una aplicación Java estaba generando una serie de informes en formato htm, pero con extensión xls.

Este tipo de informes en html son fáciles de generar ya que puedes generar una plantilla Excel html que cargue un origen de datos externo que sea un archivo.

Dichos archivos los almacenabamos con extensión xls para que el pobre usuario cuando quisiera guardar el documento se le ofreciera la extensión xls como predeterminada, y no tuviera que estar continuamente asegurandose que los guardaba con extensión xls  (Aunque realmente lo que graba es un Excel)

Aqui llega donde la matan, Office 2010 comprueba que el contenido del fichero se corresponda con su extensión. Por lo que saca el mensaje:

Excel 2010

El archivo que intenta abrir <nombre> tiene otro formato que el especificado por la extensión del archivo…

Desde luego, su extensión es xls y el contenido es html.

Para evitar el problema simplemente estos informes se pueden guardar con la extensión que les corresponde (htm o html).

Sin embargo se puede solucionar simplemente tocando en el registro del sistema del cliente de la siguiente manera:

En el registro del sistema, ya sabeis (regedit)

Para Office 2010

HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\Security

Para Office 2007

HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Excel\Security

Añadir un valor DWORD con nombre ExtensionHardening con valor cero (cero por defecto)

El valor con toda seguridad no exista. Por defecto se considera su valor 1 (preguntar, el dichoso mensaje), el valor 0 permite sin preguntar, y valor 2 deniega.

El artículo siguiente http://support.microsoft.com/kb/948615 lo comenta en más detalle, no lo he explicado a fondo porque en el artículo viene completa la solución.

Ahora vamos a complicar el tema, por la razón que sea, en los pcs clientes no se pueden tocar el registro del sistema, algo más o menos común en grandes empresas.

Y además si ese fichero .xls se le envía a un pc que no tenga configurado el registro de esa manera, le saldría igualmente el mensaje.

Hay una aproximación definitiva que evita todos estos problemas, pero la dejo para otro post, simplemente introducir que se puede hacer un script vbs que abra el excel y transforme el archivo htm (o lo que sea) para hacer una copia como xlsb. Y enviar al usuario este nuevo archivo que es Excel binario y su extensión se corresponde con el contenido. Este script se puede ejecutar en el cliente, o en el servidor siempre y cuando este tenga una instalación de Office.

Este script vbs se puede ejecutar incluso desde dentro de un applet java  o un servidor web (Windows con cliente Excel 2007/2010) , en un servidor web, enviaríamos el nuevo fichero generado, en un applet abririamos directamente el nuevo fichero generado.

Pues este es mi primer post con un poco de «chicha» , espero que si alguien pasa por aqui le resulte útil a pesar de las prisas con las que lo he tenido que hacer.

10 pensamientos en “Evitar mensaje Excel 2007/2010 «El archivo que intenta abrir tiene otro formato que el especificado por la extensión del archivo»

  1. Muy muy bueno, pero me gustaria saber mas, de lo que mencionas en la ultima parte, ya que no puedo modificar los registros en los clientes, muchas gracias por este excelente articulo

    • Hola Xander,
      No entiendo del todo que puede estar ocurriendo, pégame en un post algo de lo que te muestra por si me da más pistas y te echo una mano.
      Un saludo!

    • amigo pudiste arreglar tu problema de que al abrir un archivo de excel salian puros caracteres y simbolos raros ?? tengo un problema igual, son archivos que recupere de un disco duro formateado. Gracias

      • Tampoco tengo mucha información para tirarme a la piscina y dar la solución.
        Lo que te puedo decir es que si es un archivo recuperado es posible que no haya sido recuperado al 100%, el ejecutable de Excel intentará hacer lo posible para mostrarte el documento y puede que no sea capaz de mostrarlo correctamente. Es posible que lo que te esté mostrando como datos sea alguna de las partes binarias del archivo original.

  2. Genial, muy buena solución. A mi me sucedía en un excel generado en un sitio web, los usuarios en vez de guardar el archivo y luego abrirlo, lo ejecutaban. Quiero entender que el archivo se abrir desde la carpeta temporal de Internet Explorer, y por ello, la desconfianza que genera el Excel.

Replica a DavidSilva Cancelar la respuesta