前言
在报表自动化、业务数据防护、批量台账生成等后端开发场景中,经常需要对 excel 表头、固定配置区域、公式计算单元格进行锁定保护,防止人为误编辑与数据篡改。
本文将演示如何使用 python 实现 excel 指定单元格区域锁定、公式单元格隐藏保护、工作表密码防护、多工作表批量锁定与解除保护,所有代码示例可直接复用至自动化业务脚本。
一、环境配置
1. 免费库安装
pip install spire.xls.free
2. 模块导入
from spire.xls import * from spire.xls.common import *
二、excel 单元格锁定核心原理
excel 单元格锁定并非单独设置属性即可生效,依赖一套固定逻辑机制:
- excel 所有单元格默认
locked属性为开启状态,但未启用工作表保护时,仍可自由编辑; - 想要精准锁定指定区域,需先全局解锁整张工作表,再单独对目标单元格设置锁定;
- 配置完成后启用工作表保护并设置访问密码,锁定规则才会正式生效。
标准开发流程:
- 全局解锁工作表全部单元格;
- 对需要保护的单元格、行、列或自定义区域开启锁定;
- 设置工作表保护密码;
- 保存文件并主动释放资源。
三、实战代码示例
下文所有示例统一使用保护密码 admin@2025,可根据业务场景自行替换。
示例1:锁定指定单元格区域,保留其余区域可编辑
常用于锁定报表表头、固定参数列,开放业务数据行编辑权限。
from spire.xls import *
from spire.xls.common import *
# 加载excel文件
workbook = workbook()
workbook.loadfromfile("demo.xlsx")
worksheet = workbook.worksheets[0]
# 全局解锁所有单元格(核心)
worksheet.range.style.locked = false
# 锁定指定区域(支持单元格、行列、区域)
# 示例1:锁定单个单元格 a1
worksheet.range["a1"].style.locked = true
# 示例2:锁定区域 a1:c5
worksheet.range["a1:c5"].style.locked = true
# 示例3:锁定第1行(表头)
worksheet.rows[0].style.locked = true
# 示例4:锁定a列(固定字段)
worksheet.columns[0].style.locked = true
# 设置工作表密码保护
worksheet.protect("admin@2025")
# 保存文件并释放资源
workbook.savetofile("指定区域锁定.xlsx", excelversion.version2016)
workbook.dispose()
示例2:自动锁定公式单元格并隐藏公式内容
自动遍历表格已使用区域,识别含公式的单元格,完成锁定并隐藏公式,避免公式被篡改或随意查看。
from spire.xls import *
from spire.xls.common import *
workbook = workbook()
workbook.loadfromfile("demo.xlsx")
worksheet = workbook.worksheets[0]
# 全局解锁
worksheet.range.style.locked = false
# 遍历已使用单元格
used_range = worksheet.allocatedrange
for cell in used_range:
if cell.hasformula:
cell.style.locked = true
cell.hideformula = true
# 启用密码保护
worksheet.protect("admin@2025")
workbook.savetofile("公式单元格锁定.xlsx", excelversion.version2016)
workbook.dispose()
示例3:批量锁定工作簿所有工作表
批量对多工作表统一配置锁定区域与保护密码,适配多sheet 模板文件批量防护场景。
from spire.xls import *
from spire.xls.common import *
workbook = workbook()
workbook.loadfromfile("多工作表模板.xlsx")
# 遍历所有工作表统一配置
for sheet in workbook.worksheets:
sheet.range.style.locked = false
sheet.range["a1:c5"].style.locked = true
sheet.protect("admin@2025")
workbook.savetofile("批量工作表锁定.xlsx", excelversion.version2016)
workbook.dispose()
示例4:解除工作表密码保护
传入原有保护密码,撤销工作表锁定状态,恢复所有单元格可编辑。
from spire.xls import *
from spire.xls.common import *
workbook = workbook()
workbook.loadfromfile("指定区域锁定.xlsx")
worksheet = workbook.worksheets[0]
# 输入原有密码解除保护
worksheet.unprotect("admin@2025")
workbook.savetofile("解除工作表保护.xlsx", excelversion.version2016)
workbook.dispose()
四、开发注意事项
- 单元格
locked属性仅做标记,必须启用工作表保护才会真正生效; - 完成文件操作后务必调用
dispose()释放资源,防止进程常驻占用文件; - 优先采用
xlsx格式进行操作,老式xls格式在工作表保护特性上兼容性较弱; - 程序运行环境无需安装 office 或 wps,可直接部署在服务器后台定时任务中;
- 解除工作表保护时,需传入与设置保护时一致的密码。
五、总结
本文结合实际开发场景,实现了 excel 单元格指定区域锁定、公式隐藏保护、多工作表批量处理、密码保护与解锁等常用功能。遵循全局解锁、局部锁定、密码防护的标准逻辑,代码结构规范、可直接落地接入报表生成、数据导出、模板固化等自动化项目,适合作为 python 操作 excel 数据防护的通用解决方案。
到此这篇关于python实现锁定指定excel单元格区域的文章就介绍到这了,更多相关python锁定excel单元格内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论