Python XLWT如何设置Excel工作簿保护使其不可编辑?
XLWT工作簿保护相关问题解答
首先明确结论:XLWT本身不原生支持工作簿层面的保护密码设置,无法仅通过XLWT实现彻底禁止工作簿结构编辑的需求。
现有代码无效的原因
你当前设置的protect、wnd_protect、obj_protect三个参数,仅开启了工作簿结构保护的状态标记,没有绑定对应的解锁密码。相当于只是给Excel标记了「当前工作簿处于保护状态」,但没有上密码锁,任何打开文件的用户都可以直接通过Excel自带的保护工作簿功能设置新密码再解除保护,自然可以随意修改工作簿结构。
可行的替代方案
- 方案一:更换支持工作簿保护的第三方库处理
如果可以接受调整技术栈,优先推荐使用支持工作簿级密码配置的库实现需求:- 若可以切换为生成xlsx格式文件,使用
openpyxl库即可直接设置工作簿保护密码 - 若必须保留xls格式,可使用
win32com或者xlwings调用本地Excel能力,在XLWT生成文件后二次补加工作簿保护密码,参考代码如下:
- 若可以切换为生成xlsx格式文件,使用
# 需要先安装pywin32库:pip install pywin32 import win32com.client as win32 # 初始化Excel进程 excel = win32.gencache.EnsureDispatch('Excel.Application') # 打开XLWT生成的xls文件,注意要传入绝对路径 wb = excel.Workbooks.Open(r"C:\xxx\workbook7dg56e38.xls") # 设置工作簿保护密码,Structure=True表示保护结构禁止增删改工作表 wb.Protect(Password="你自定义的保护密码", Structure=True, Windows=True) # 保存修改并关闭资源 wb.Save() wb.Close() excel.Quit()
- 方案二:降级实现保护需求
如果必须仅使用XLWT、且无法调用本地Excel能力,可以给所有工作表设置编辑密码,同时锁定单元格内容,至少可以避免现有工作表的内容被篡改,无法完全阻止增删工作表的操作。
内容的提问来源于stack exchange,提问作者Ravi
相关产品推荐
相关产品推荐

