No poder abrir archivos de Excel descargados o generados por php


Desde hace días por una actualización de seguridad Excel (KB3115262 del 12 de julio de 2016), no he podido ver los archivos generados desde el sistema y los usuarios del mismo empezaron a presentar el mismo problema. Al intentar abrirlos, el Excel no responde o abre en gris, sin mostrar ninguna información.

Este problema es generado principalmente por los archivos que no se codifican correctamente al generarse desde otro sistema, por ejemplo cuando se general desde php convirtiendo el html con cabeceras de tipo “application/vnd.ms-excel”. Al abrir dichos archivos puede aparecer un mensaje: “El formato y la extensión de archivo de –NombreArchivo.xls- no coinciden. Puede que el archivo esté dañado o no sea seguro. No lo abra a menos que confíe en su origen. ¿Desea Abrirlo de todos modos? ” El cual con simplemente indicar “Sí”, ya podremos acceder.

excel01

 

Sin embargo en ocasiones puede no aparecer el mensaje, quedando la hoja en blanco o gris:

excel02

Solución

Lo ideal es utilizar librerías como PHPExcel https://phpexcel.codeplex.com/ la cual ya maneja internamente estas codificaciones. Si no puedes cambiar todos los reportes a esta librería, también puedes intentar lo siguiente:

Deshabilitar las opciones de vista protegida para archivos descargados de internet. Esto puede ser riesgoso si nos pasamos el día abriendo cualquier archivo que descargamos de internet pero no será un problema si conocemos que archivos estamos abriendo y su origen (sistema propio).

Para ello abrimos el Excel y vamos a las opciones “Archivo -> Opciones -> Centro de confianza -> Configuración del centro de confianza -> Vista Protegida” y quitamos la primera casilla “Habilitar la Vista protegida para los archivos procedentes de Internet”.

excel03

 

excel04

 

excel05

 

excel06

 

También hay otros medios que se pueden deshabilitar, “archivos de ubicaciones no seguros” y “datos adjuntos de Outlook”, que puede suceder el mismo inconveniente si enviamos dichos archivos por correo.

 

Adicional

Con esto sería suficiente, pero si el problema persiste o si tiende a cambiarse la configuración con cada nueva actualización, podemos desinstalar solo dicha actualización, la KB3115262. La podemos buscar en “Panel de control -> Programas -> Programas y características -> Ver actualizaciones instaladas”.

excel07

 

excel08

 

Podemos buscar por criterio “Security” o por la actualización KB3115262 directamente, en este caso tengo el office 2013, debería ser el mismo para los otros.

Toma en cuenta que puede volverse a instalar en otras actualizaciones o si tienes el Windows update automático, antes en Windows anteriores podíamos elegir que instalar y que actualizaciones evitar, ahora en Windows 10 no se puede.

excel09

 

Para evitar la actualización podemos deshabilitarla para productos de Microsoft y de esta manera evitar que se actualice el office pero preservando las actualizaciones de Windows.

Vamos a “Windows update” o “Configuración de windows update” e ingresamos a opciones avanzadas.

excel10

 

Y Desactivamos la primera casilla:

excel11

 

Otra forma de evitar la actualización es ocultándola, como en Windows 10 ya no existe esa opción, Microsoft tiene un programa que podemos descargar e instalar para ocultar actualizaciones. Ver artículo: Ocultar actualizaciones en windows 10

 

Opcional

Si quieres evitar el dialogo al abrir un Excel, ejemplo:

excel01

 

Podemos evitarlo editando el registro de Windows, ingresamos a “regedit”, ya sea buscándolo en el buscador de inicio o desde ejecutar.

Luego nos dirigimos a la entrada donde tenemos instalado nuestro office, puede variar según la versión de office, 14, 15, 16 o incluso tener los tres o más.

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\15.0\Excel\Security

Al seleccionar dicha carpeta security, a la derecha se desplegará las claves u opciones establecidas, en este caso buscamos la que indique ExtensionHardening pero comúnmente no existe y debemos crearla. Si ya existe simplemente le damos doble clic y establecemos el valor en cero.

Si no existe:

excel13

 

Hacemos clic derecho en la carpeta “Security” y luego en “Nuevo -> Valor de Dword (32 bits)”

excel14

 

El cual creamos con nombre: ExtensionHardening

excel15

 

Y automáticamente se crea en cero, podemos hacer doble clic para verificar:

excel16

 

El valor en 1 indica que preguntará al abrir archivos desconocidos de Excel, el valor 2 no aparecerá ningún dialogo y no abrirá los archivos dejando el Excel en gris, la opción 0 indica que no preguntará y abrirá cualquier archivo.

Si trabajamos con PHPExcel, no necesitamos realizar ningún cambio porque los archivos generados están correctamente codificados y no aparece ningún dialogo.

Comparte
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *