Herramientas

Eliminar la protección en archivos Excel

En muchos entornos la utilización de archivos Excel para el envío de datos es un estándar, a pesar de sus grandes desventajas. Además, es habitual que protejamos los mismo con una contraseña para evitar que sean modificados por otros usuarios. Obligándonos a introducir la contraseña para eliminar la protección en archivos Excel y poder realizar cualquier cambio. Debido a la cantidad de archivos de este tipo que manejamos es habitual olvidar la contraseña de algunos, de modo que nos quedamos con un archivo que no podemos modificar.

Eliminar la protección de un archivo Excel es una tarea relativamente sencilla que se puede realizar manualmente o automatizar. En esta entrada explicaré como eliminar la protección manilamente y al final dejaré un script de Python que permite automatizar la tarea.

Error al modificar un archivo Excel protegido

En el caso de que nos olvidemos de la contraseña del Excel no suele se complicado recupérala, ya que estas suelen ser débiles. Pero, cuando no es así, eliminar la protección de estos archivos es relativamente simple. Para hacer esta tarea primero se ha de conocer el formato de los archivos Excel.  

Formato de los archivos Excel

Los archivos con formato xlsx que empela actualmente Excel no son más que una carpeta comprimida en la que se pueden encontrar archivos XML. Esto se puede comprobar simplemente cambiando la extensión del archivo a zip y utilizando un descompresor de estándar. Un ejemplo de lo que se obtiene de puede observar en la siguiente captura de pantalla.

Contenido descomprimido de un archivo xlsx

Cada una de las hojas del libro es básicamente un archivo XML que se encuentra en dentro de la ruta xl/worksheets. En el ejemplo anterior se pueden observar la existencia de dos hojas: sheet1.xml y sheet2.xml. El contenido de una de ellas se puede ver en la siguiente captura.

Contenido del archivo sheet1.xml

Hacia el final del archivo se puede encontrar una propiedad sheetProtection en la que se almacena el hash de contraseña (afortunadamente no es la contraseña en texto plano).

Hash de la contraseña en el archivo XML

Eliminación de la contraseña del Excel

Ahora, para desproteger las hojas del libro simplemente se ha de eliminar la propiedad sheetProtection y volver a comprimir la carpeta en un archivo xlsx. El nuevo archivo obtenido de esta forma se puede abrir con Excel y modificar los valores de este. Como se muestra en la siguiente captura, ya no aparece el candado en la pestaña de la hoja indicando que esta esta protegida.

Archivo desprotegido

Automatización del proceso en Python

El proceso descrito anteriormente para la desprotección de archivos Excel es sencillo pero tedioso. Para facilitar la tare se puede escribir un pequeño script en Phyton que automatiza la tarea.

import shutil
import os
import re
import zipfile


def unprotect_xlsx(excel_file, surname='_unprotect', temporal_folder='.temp_folder'):
    zip_ref = zipfile.ZipFile(excel_file, 'r')
    zip_ref.extractall(temporal_folder)
    zip_ref.close()

    sheet_folder = os.path.join(temporal_folder, 'xl/worksheets')
    sheet_list = os.listdir(sheet_folder)

    for sheet in sheet_list:
        filename = os.path.join(sheet_folder, sheet)

        if os.path.isfile(filename):
            file = open(filename, 'r')
            data = file.read()
            file.close()

            data = re.sub(r"<sheetProtection.*?/>", "", data)

            file = open(filename, 'w')
            file.write(data)
            file.close()

    out_file = excel_file.replace('.xlsx', surname + '.xlsx')

    shutil.make_archive(out_file, 'zip', temporal_folder)
    shutil.move(out_file + '.zip', out_file)
    shutil.rmtree(temporal_folder)

En la función unprotect_xlsx lo primero que se hace es descomprimir el archivo Excel en una carpeta temporal. En el interior de esta carpeta se buscan todos los archivos XLM que se encuentran dentro de la ruta xl/worksheets. Posteriormente se itera sobre estos archivos eliminado la propiedad sheetProtection cuando esta existe y volviendo a guardar el archivo. Finalmente, se comprime la carpeta con en un archivo zip al que se le cambia la extensión a xlsx.

Conclusiones

En muchas ocasiones protegemos archivos Excel con una contraseña para evitar que otros usuarios los modifiquen. En el caso de olvidar esta contraseña eliminar la protección no es demasiado complicado.

Imágenes: Pixabay (TheDigitalArtist)

¿Te ha parecido de utilidad el contenido?

Daniel Rodríguez

Share
Published by
Daniel Rodríguez
Tags: Excel

Recent Posts

Interés compuesto: la fuerza que multiplica tu dinero (y los errores que la anulan)

“El interés compuesto es la octava maravilla del mundo. El que lo entiende lo gana…

24 horas ago

Cómo comparar datos con barras en Matplotlib: agrupadas, apiladas y porcentuales

Tienes los datos de ventas de tres productos en dos años distintos y quieres saber…

3 días ago

Costes hundidos en ciencia de datos: cuándo mantener un modelo y cuándo migrar

Imagina la situación. Tu equipo lleva tres años con un modelo en producción. No es…

1 semana ago

WOE e IV: La Base Matemática del Credit Scoring

Cuando un banco evalúa una solicitud de crédito necesita responder a una pregunta aparentemente simple:…

1 semana ago

Lanzamiento de la versión 1.0 del laboratorio de Analytics Lane con nuevas herramientas de scoring

En el octavo aniversario de Analytics Lane seguimos ampliando nuestro laboratorio de aplicaciones interactivas y,…

2 semanas ago

¡Analytics Lane cumple ocho años!

Hoy, 2 de mayo de 2026, Analytics Lane cumple exactamente ocho años. Todo empezó con…

2 semanas ago

This website uses cookies.