Bloquear celdas para Protegérlas con Python.NET

Escenarios de uso posibles

Bloquear celdas para protegerlas es una práctica común en aplicaciones de hojas de cálculo, como Microsoft Excel o Google Sheets, por varias razones importantes:

  1. Prevención de cambios accidentales: Bloquear celdas puede evitar que los usuarios modifiquen accidentalmente datos o fórmulas importantes.
  2. Mantenimiento de la integridad de los datos: Garantizar que datos críticos permanezcan consistentes y precisos.
  3. Acceso controlado: Gestionar permisos de edición en entornos colaborativos.
  4. Protección de fórmulas: Salvaguardar cálculos cruciales contra alteraciones.
  5. Aplicación de reglas comerciales: Cumplir con los requisitos de protección de datos.
  6. Orientar a los usuarios: Proporcionar áreas editables claras en hojas de cálculo complejas.

Cómo bloquear celdas en Excel para protegerlas

Así puedes bloquear celdas en Microsoft Excel:

  1. Seleccionar las celdas a bloquear: Elegir celdas o saltarse para bloquear toda la hoja.
  2. Abrir el cuadro de diálogo Formatear celdas: clic derecho > “Formato de celdas” o Ctrl+1.
  3. Bloquear las celdas: Ir a la pestaña “Protección” > Marcar “Bloqueada” > Hacer clic en “Aceptar”.
  4. Proteger la hoja de cálculo: pestaña “Revisar” > “Proteger hoja” > Establecer contraseña/permisos > Hacer clic en “Aceptar”.

Cómo bloquear celdas para protegerlas usando Python

Aspose.Cells para Python via .NET permite la protección de celdas de manera programática. Sigue estos pasos:

  1. Cargar el archivo de ejemplo
  2. Desbloquear todas las celdas (el estado predeterminado de bloqueo no se aplica hasta que se proteja)
  3. Bloquear celdas específicas
  4. Proteger la hoja para hacer cumplir el bloqueo
import aspose.cells as ac

# Load sample workbook
workbook = ac.Workbook("sample.xlsx")
worksheet = workbook.worksheets[0]

# Unlock all cells first
style = ac.Style()
style.is_locked = False
style_flag = ac.StyleFlag()
style_flag.locked = True
worksheet.cells.apply_style(style, style_flag)

# Lock specific cells
worksheet.cells["A1"].get_style().is_locked = True
worksheet.cells["B2"].get_style().is_locked = True

# Enable worksheet protection
worksheet.protect(ac.ProtectionType.ALL)

# Save protected workbook
workbook.save("output.xlsx")

Resultado de salida

Esta implementación bloquea las celdas especificadas (A1 y B2) mientras mantiene otras editables. La protección de la hoja hace cumplir estas configuraciones.


from aspose.cells import Workbook, ProtectionType, StyleFlag

# Load the Excel file
workbook = Workbook("sample.xlsx")

# Access the first worksheet
sheet = workbook.worksheets[0]

# Unlock all cells first
unlock_style = workbook.create_style()
unlock_style.is_locked = False

style_flag = StyleFlag()
style_flag.locked = True
sheet.cells.apply_style(unlock_style, style_flag)

# Lock specific cells (A1 and B2)
lock_style = workbook.create_style()
lock_style.is_locked = True

sheet.cells.get("A1").set_style(lock_style)
sheet.cells.get("B2").set_style(lock_style)

# Protect the worksheet to enforce locking
sheet.protect(ProtectionType.ALL)

# Save the modified workbook
workbook.save("output_locked.xlsx")