2016-11-15 2 views
1

Ich verwende xlsxwriter, um Excel-Blatt zu erzeugen. Ich verwende worksheet.protect(), um das gesamte Blatt zu sperren. Ich möchte jedoch, dass eine Gruppe von Zellen entsperrt wird. Außerdem möchte ich, dass diese Zelle leer ist.xlswriter leere Zelle mit entriegeltem Format schreiben

Ich habe versucht, Arbeitsblatt.Conditional_format() zu verwenden, war aber nicht erfolgreich. Bitte helfen Sie.

Ich habe versucht, mit worksheet.write() das Format (Entsperren) Zelle für Zelle anzuwenden, aber es scheint, dass es einen Wert erfordert. Wenn ich '' leere Zeichenfolge, das Entsperren Format wurde nicht angewendet, aber wenn ich ein Leerzeichen '', sehe ich das Format (entsperren) erfolgreich angewendet wurde.

Antwort

1

In Excel oder einer XlsxWriter-Datei sind alle Zellen standardmäßig gesperrt, sobald der Arbeitsblattschutz aktiviert ist.

Um den Schutz für eine Zelle zu deaktivieren, müssen Sie das Format mit der Eigenschaft lock deaktivieren.

Wenn Sie eine leere gesperrte Zelle dann None oder die leere Zeichenkette '' als Wert zu write() oder write_blank() explizit verwenden verwenden, zusammen mit einem Format:

import xlsxwriter 

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

# Create a cell format with lock protection turned off. 
unlocked = workbook.add_format({'locked': False}) 

# Format the columns to make the text more visible. 
worksheet.set_column('A:A', 40) 

# Turn worksheet protection on. 
worksheet.protect() 

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

worksheet.write('B1', 'Hello') # Locked by default. 
worksheet.write('B2', None, unlocked) 
worksheet.write_blank('B3', None, unlocked) 

workbook.close() 

Ausgang:

enter image description here

+0

vielen Dank dafür. – user3117282