XlsxWriter:仅锁定特定单元格

dab*_*aza 6 excel-2010 python-3.x xlsxwriter

我正在使用xlsxwriter创建xlsx文件,并希望保护特定的单元格(例如B2:B20范围内的所有单元格).文档说你可以使用worksheet.protect()方法 - 它默认启用整个工作表的保护 - 然后你可以workbook.add_format({'locked': 0})用来解锁特定的单元格.但我反之亦然 - 我想只锁定特定范围的单元格,并将工作表的其余部分解锁.我怎样才能做到这一点?

jmc*_*ara 7

执行此操作的方法与Excel中的相同:为整个工作表设置解锁格式.

在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()
Run Code Online (Sandbox Code Playgroud)