2016-11-30 4 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これはまた、画像をセルにロックするので、すべてのデータの順序を保持しながらシートを並べ替えることができます –

関連する問題