使用xlwings保护工作表时如何禁用“选择锁定单元格”?
解决xlwings保护工作表时禁用“选择锁定单元格”的问题
你遇到的问题是因为AllowSelectingLockedCells并不是Excel Worksheet.Protect()方法的直接参数,要实现禁用“选择锁定单元格”的效果,需要通过设置工作表的EnableSelection属性来完成,具体操作如下:
核心原理
Excel中“选择锁定单元格”的权限由工作表的EnableSelection属性控制:
- 设置为
xlUnlockedCells(对应数值1):仅允许选择未锁定单元格,对应取消勾选“选择锁定单元格”的效果 - 设置为
xlNoSelection(对应数值2):禁止选择任何单元格 - 设置为
xlNoRestrictions(对应数值0):允许选择所有单元格(默认状态)
需要在调用Protect()方法完成基础保护设置后,添加EnableSelection的配置代码。
修改后的完整代码
import xlwings as xw folder = r"C:\Python\DF\" # 用原始字符串避免路径转义问题 xls = "65982.xlsx" book = xw.Book(folder + xls) book.app.visible = True sht = book.sheets["Sheet1"] # 执行工作表基础保护配置 sht.api.Protect( DrawingObjects=False, Contents=True, Scenarios=True, UserInterfaceOnly=False, AllowFormattingCells=False, AllowFormattingColumns=False, AllowFormattingRows=False, AllowInsertingColumns=False, AllowInsertingRows=False, AllowInsertingHyperlinks=False, AllowDeletingColumns=False, AllowDeletingRows=False, AllowSorting=False, AllowFiltering=False, AllowUsingPivotTables=False ) # 配置仅允许选择未锁定单元格,即禁用“选择锁定单元格” sht.api.EnableSelection = xw.constants.EnableSelection.xlUnlockedCells # 若xlwings版本不支持constants,直接用数值1代替:sht.api.EnableSelection = 1 book.save()
额外提示
- 路径字符串建议添加前缀
r使用原始字符串,避免因转义字符导致的路径识别错误 - 如果不需要完全禁用选择,只是限制到未锁定单元格,上述代码即可满足需求
内容的提问来源于stack exchange,提问作者FORREST.KIM
相关产品推荐
相关产品推荐

