2016-11-30 78 views
5

我使用xlsxwriter創建了xlsx文件,並且想要保護特定單元格(例如,範圍爲B2:B20中的所有單元格)。該文檔說,您可以使用worksheet.protect()方法 - 它默認打開整個工作表的保護 - 然後您可以使用workbook.add_format({'locked': 0})來解鎖特定的單元格。但我想反之亦然 - 我只想鎖定特定範圍的單元格,並將工作表的其餘部分解鎖。我怎樣才能做到這一點?XlsxWriter:僅鎖定特定單元格

回答

5

執行此操作的方法與Excel中的相同:set an unlock format for the entire sheet

在Excel和XlsxWriter中,這將轉換爲爲所有列設置解鎖格式。像這樣:

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

非常感謝你爲這個非常好的代碼和一般的偉大lib!這對我非常有幫助。 春天夏天秋天的冬天,他唱了他沒有跳舞,他做了:3 – dabajabaza

+0

+1因爲這也會將圖像鎖定到單元格,然後允許您排序表單,同時保留所有數據的順序 –