2016-11-30 7 views
5

Ich erstelle xlsx-Dateien mit xlsxwriter und möchte bestimmte Zellen schützen (zum Beispiel alle Zellen in einem Bereich B2: B20). In der Dokumentation wird angegeben, dass Sie die Methode worksheet.protect() verwenden können - standardmäßig wird der Schutz für das gesamte Arbeitsblatt aktiviert. Anschließend können Sie workbook.add_format({'locked': 0}) zum Entsperren bestimmter Zellen verwenden. Aber ich möchte umgekehrt - Ich möchte nur bestimmte Zellbereiche sperren und den Rest des Arbeitsblatts entsperrt lassen. Wie kann ich das machen?XlsxWriter: nur bestimmte Zellen sperren

Antwort

5

Der Weg dazu ist der gleiche wie in Excel: set an unlock format for the entire sheet.

In Excel und XlsxWriter bedeutet dies ein Entsperren Format für alle Spalten festlegen. Gefällt mir:

import xlsxwriter 

workbook = xlsxwriter.Workbook('protection.xlsx') 
worksheet = workbook.add_worksheet() 

# Create some cell formats with protection properties. 
unlocked = workbook.add_format({'locked': False}) 
locked = workbook.add_format({'locked': True}) 

# Format the worksheet to unlock all cells. 
worksheet.set_column('A:XDF', None, unlocked) 

# Turn worksheet protection on. 
worksheet.protect() 

# Write a locked and an unlocked cell. 
worksheet.write('B1', 'Cell A1 is locked. It cannot be edited.') 
worksheet.write('B2', 'Cell A2 is unlocked. It can be edited.') 
worksheet.write('B3', 'Cell A3 is unlocked. It can be edited.') 

worksheet.write('A1', 'Hello', locked ) 
worksheet.write('A2', 'Hello', unlocked) 
worksheet.write('A3', 'Hello'   ) # Unlocked by default. 

workbook.close() 
+0

Vielen Dank für diesen Code und für Ihre große lib im Allgemeinen! Es hilft mir wirklich sehr. Und Frühling Sommer Herbst Winter sang er seine tat er nicht getanzt seine: 3 – dabajabaza

+0

+1 Weil dies auch Bilder an Zellen sperren, die dann ermöglicht Ihnen, das Blatt zu sortieren, während die Reihenfolge aller Daten zu erhalten –

Verwandte Themen