使用Python保护或加密Excel文件的7种方法

目录
安装Python Excel库
Python 使用文档打开密码保护 Excel 文件
Python 使用文档修改密码保护 Excel 文件
Python 将 Excel 文件标记为最终版本
Python 保护 Excel 工作表
Python 在保护 Excel 工作表的同时允许编辑某些单元格
Python 锁定 Excel 工作表中的特定单元格
Python 锁定 Excel 工作表中的特定行或列
Excel文件通常包含敏感信息,如财务记录、客户数据或专有公式。保护和加密这些文件对于防止未经授权的访问和维护机密性至关重要。在本文中,我们将探讨如何使用Python自动化Excel文件的安全保护和加密过程,确保数据的安全性。主要包括以下主题:
- 使用文档打开密码保护 Excel 文件
- 使用文档修改密码保护 Excel 文件
- 将 Excel 文件标记为最终版本
- 保护 Excel 工作表
- 在保护 Excel 工作表的同时允许编辑某些单元格
- 锁定 Excel 工作表中的特定单元格
- 锁定Excel 工作表中的特定行或列
安装Python Excel库
在Python中,我们可以使用Spire.XLS for Python库来保护或加密Excel文件。该库提供了多种功能来保护和加密Excel文件,如设置密码、应用工作表保护、将Excel标记为最终版本、锁定单元格、行、列等。
你可以使用以下pip命令从PyPI安装Spire.XLS for Python:
pip install Spire.Xls
如果不清楚如何安装,查看这篇文档:如何在 Windows 中安装 Spire.XLS for Python
Python 使用文档打开密码保护 Excel 文件
文档打开密码的主要作用是限制未经授权的人打开或访问文档。设置了打开密码后,任何人都需要输入正确的密码才能成功打开该Excel文件。
通过使用Spire.XLS for Python提供的Workbook.Protect()方法,可以给Excel文件设置文档打开密码。关键步骤如下:
- 创建Workbook类的实例。
- 使用Workbook.LoadFromFile()方法加载Excel文件。
- 使用Workbook.Protect()方法给该Excel文件设置文档打开密码。
- 使用Workbook.SaveToFile()方法保存结果文件。
完整代码:
from spire.xls import *
from spire.xls.common import *# 创建一个 Workbook 对象
workbook = Workbook()
# 加载一个 Excel 文件
workbook.LoadFromFile("测试.xlsx")# 给文件设置文档打开密码
workbook.Protect("12345Open")# 保存结果文件
workbook.SaveToFile("文档打开密码.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
Python 使用文档修改密码保护 Excel 文件
文档修改密码用于限制未经授权的人修改或编辑文档。设置了修改密码后,任何人都需要输入正确的密码才能成功修改该Excel文件内容。
要给Excel文件设置文档修改密码,可以使用Workbook.SetWriteProtectionPassword()方法。具体步骤如下:
- 创建Workbook类的实例。
- 使用Workbook.LoadFromFile()方法加载Excel文件。
- 使用Workbook.SetWriteProtectionPassword()方法给该Excel文件设置文档修改密码。
- 使用Workbook.SaveToFile()方法保存结果文件。
完整代码:
from spire.xls import *
from spire.xls.common import *# 创建一个 Workbook 对象
workbook = Workbook()
# 加载一个 Excel 文件
workbook.LoadFromFile("测试.xlsx")# 给文件设置文档修改密码
workbook.SetWriteProtectionPassword("12345Modify")# 保存结果文件
workbook.SaveToFile("文档修改密码.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
需要注意的是,文档打开密码和修改密码可以单独设置,也可以同时设置。当同时设置了这两种密码时,用户不仅需要输入正确的打开密码才能打开文件,还需要输入正确的修改密码才能编辑文件内容。
Python 将 Excel 文件标记为最终版本
当Excel文件被标记为最终版本后,其他用户在打开文件时会看到"此文件已被标记为最终版本"的提示,从而知道不应再对其进行编辑。这种方式可以有效防止Excel文件被意外修改。
要将Excel文件标记为最终版本,可以使用Workbook.CustomDocumentProperties.Add("_MarkAsFinal", True)方法。具体步骤如下:
- 创建Workbook类的实例。
- 使用Workbook.LoadFromFile()方法加载Excel文件。
- 使用Workbook.CustomDocumentProperties.Add("_MarkAsFinal", True)方法将该Excel文件标记为最终版本。
- 使用Workbook.SaveToFile()方法保存结果文件。
完整代码:
from spire.xls import *
from spire.xls.common import *# 创建一个 Workbook 对象
workbook = Workbook()
# 加载一个 Excel 文件
workbook.LoadFromFile("测试.xlsx")# 将文档标记为最终版本
workbook.CustomDocumentProperties.Add("_MarkAsFinal", True)# 保存结果文件
workbook.SaveToFile("最终版本.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
Python 保护 Excel 工作表
除了保护整个Excel文件以外,Excel还支持对单个工作表进行保护,从而限制用户对特定工作表的编辑操作。
要保护特定Excel工作表,可以使用Worksheet.Protect()方法。具体步骤如下:
- 创建Workbook类的实例。
- 使用Workbook.LoadFromFile()方法加载Excel文件。
- 使用Workbook.Worksheets[index]属性获取特定工作表。
- 使用Worksheet.Protect()方法保护该工作表。
- 使用Workbook.SaveToFile()方法保存结果文件。
完整代码:
from spire.xls import *
from spire.xls.common import *# 创建一个 Workbook 对象
workbook = Workbook()
# 加载一个 Excel 文件
workbook.LoadFromFile("测试.xlsx")# 获取第一个工作表
sheet = workbook.Worksheets[0]# 用密码保护工作表,并指定保护类型
sheet.Protect("Sheet111", SheetProtectionType.none)# 保存结果文件
workbook.SaveToFile("保护工作表.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
Python 在保护 Excel 工作表的同时允许编辑某些单元格
在保护 Excel 工作表时,你可以设置可编辑区域,以允许用户编辑被保护工作表中的某些特定单元格。
要设置工作表的可编辑区域,可以使用Worksheet.AddAllowEditRange()方法。具体步骤如下:
- 创建Workbook类的实例。
- 使用Workbook.LoadFromFile()方法加载Excel文件。
- 使用Workbook.Worksheets[index]属性获取特定工作表。
- 使用Worksheet.AddAllowEditRange()方法指定保护工作表后可编辑的单元格区域。
- 使用Worksheet.Protect()方法保护该工作表。
- 使用Workbook.SaveToFile()方法保存结果文件。
完整代码:
from spire.xls import *
from spire.xls.common import *# 创建一个 Workbook 对象
workbook = Workbook()
# 加载一个 Excel 文件
workbook.LoadFromFile("测试.xlsx")# 获取第一个工作表
sheet = workbook.Worksheets[0]# 指定可编辑的单元格区域
sheet.AddAllowEditRange("Range1", sheet.Range["B2:E11"])# 用密码保护工作表
sheet.Protect("Sheet111", SheetProtectionType.none)# 保存结果文件
workbook.SaveToFile("可编辑区域.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
Python 锁定 Excel 工作表中的特定单元格
如果 Excel 工作表中一些关键单元格包含重要的公式或数据,你可以对这些单元格进行锁定保护。这样可以防止普通用户对这些关键单元格进行编辑,同时仍然让他们可以对其他单元格进行操作。
要锁定特定单元格,可以使用Worksheet.Range[].Style.Locked属性。具体步骤如下:
- 创建Workbook类的实例。
- 使用Workbook.LoadFromFile()方法加载Excel文件。
- 使用Workbook.Worksheets[index]属性获取特定工作表。
- 使用Worksheet.Cells属性获取工作表的单元格集合。
- 循环遍历单元格,并取消所有单元格的锁定状态 (Excel中所有单元格的锁定状态默认是选中的)。
- 使用Worksheet.Range[].Style.Locked属性锁定特定单元格或单元格区域。
- 使用Worksheet.Protect()方法保护该工作表。
- 使用Workbook.SaveToFile()方法保存结果文件。
完整代码:
from spire.xls import *
from spire.xls.common import *# 创建一个 Workbook 对象
workbook = Workbook()
# 加载一个 Excel 文件
workbook.LoadFromFile("测试.xlsx")# 获取第一个工作表
sheet = workbook.Worksheets[0]# 获取工作表的单元格集合
cellsCollection = sheet.Cells# 循环遍历单元格,并取消所有单元格的锁定状态 (在Excel中,所有单元格的锁定状态默认都是选中的)
for cell in cellsCollection:cell.Style.Locked = False# 锁定特定的单元格区域
sheet.Range["A1:E1"].Style.Locked = True# 用密码保护工作表
sheet.Protect("Sheet111", SheetProtectionType.none)# 保存结果文件
workbook.SaveToFile("锁定单元格.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
Python 锁定 Excel 工作表中的特定行或列
除了锁定特定的单元格或区域外,你还可以锁定整行或整列。
要锁定特定的行或列,可以使用Worksheet.Rows[index].Style.Locked或Worksheet.Columns[index].Style.Locked属性。具体步骤如下:
- 创建Workbook类的实例。
- 使用Workbook.LoadFromFile()方法加载Excel文件。
- 使用Workbook.Worksheets[index]属性获取特定工作表。
- 使用Worksheet.Cells属性获取工作表的单元格集合。
- 循环遍历单元格,并取消所有单元格的锁定状态 (Excel中所有单元格的锁定状态默认是选中的)。
- 使用Worksheet.Rows[index].Style.Locked或Worksheet.Columns[index].Style.Locked属性锁定特定行或列。
- 使用Worksheet.Protect()方法保护该工作表。
- 使用Workbook.SaveToFile()方法保存结果文件。
完整代码:
from spire.xls import *
from spire.xls.common import *# 创建一个 Workbook 对象
workbook = Workbook()
# 加载一个 Excel 文件
workbook.LoadFromFile("测试.xlsx")# 获取第一个工作表
sheet = workbook.Worksheets[0]# 获取工作表的单元格集合
cellsCollection = sheet.Cells# 循环遍历单元格,并取消所有单元格的锁定状态 (在Excel中,所有单元格的锁定状态默认都是选中的)
for cell in cellsCollection:cell.Style.Locked = False# 锁定第一行和第一列
sheet.Rows[0].Style.Locked = True
sheet.Columns[0].Style.Locked = True# 用密码保护工作表
sheet.Protect("Sheet111", SheetProtectionType.none)# 保存结果文件
workbook.SaveToFile("锁定行列.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
以上就是使用Python保护或加密Excel文件的7种不同的场景。希望对你有帮助。
本文完结-
相关文章:
使用Python保护或加密Excel文件的7种方法
目录 安装Python Excel库 Python 使用文档打开密码保护 Excel 文件 Python 使用文档修改密码保护 Excel 文件 Python 将 Excel 文件标记为最终版本 Python 保护 Excel 工作表 Python 在保护 Excel 工作表的同时允许编辑某些单元格 Python 锁定 Excel 工作表中的特定单元…...
【嵌入式Linux】<总览> 文件IO(更新中)
文章目录 前言 一、常用函数 1. open函数 2. close函数 3. write函数 4. read函数 5. dup函数 6. dup2函数 二、文件读写细节 1. 换行符 2. 文件描述符 3. errno和perror 前言 在Linux系统中,一切皆文件。因此,掌握Linux下文件IO常用的函数…...
【无线传感网】分簇路由算法介绍
目录 1、LEACH路由算法 2、PEGASIS 算法 3、TEEN 算法 5、APTEEN 5、LEACH-C 算法 无线传感网中的路由协议就是寻找一条路径让网络中节点沿着这条路径将数据信息传输出去。路由协议的两大关键要点就是路径的优化和数据的分组,在传统计算机网络中,是将网络的拓扑…...
java 利用poi读取wps嵌入式图片,自测
代码 主要工具类 需要引入依赖: package com.chenkang.demo.util;import cn.wps.officeDocument.x2017.etCustomData.CellImagesDocument; import org.apache.poi.openxml4j.opc.OPCPackage; import org.apache.poi.openxml4j.opc.PackagePart; import org.apache.…...
git 常用操作指令
文章目录 git clonegit configgit addgit commitgit rmgit branch/checkoutgit pull/pushgit rebash/merge git clone git clone 可以将一个远程 Git 仓库拷贝到本地,让自己能够查看该项目,或者进行修改。 拷贝项目命令格式如下:git clone [u…...
达梦导入导出
针对导出数据库表结构通常有 3 种方法: 使用 DTS 导出 打开 DTS 迁移工具,选择【DM-->SQL】并链接到数据库中,如下图所示: 添加定义脚本,并选择【迁移范围】(仅迁移对象定义),如…...
超级数据查看器 教程pdf 1-31集 百度网盘
百度网盘链接 提取码1234https://pan.baidu.com/s/1s_2lbwZ2_Su83vDElv76ag?pwd1234 通过百度网盘分享的文件:超级数据查看器 … 链接:https://pan.baidu.com/s/1s_2lbwZ2_Su83vDElv76ag?pwd1234 提取码:1234 复制这段内容打开「百度网盘APP 即可获取」...
一、开发环境安装 Avalonia
1、概述 官网中是这么介绍Avalonia的,Avalonia是一个强大的框架,使开发人员能够使用.NET创建跨平台应用程序。它使用自己的渲染引擎绘制UI控件,确保在Windows、macOS、Linux、Android、iOS和WebAssembly等不同平台上具有一致的外观和行为。这…...
融资A轮B轮是什么意思?
环境: 融资 问题描述: 融资A轮B轮是什么意思 解决方案: 在A轮融资之前,通常有以下几轮融资阶段: 种子轮(Seed Round):这是企业生命周期中最早的融资阶段,通常发生在…...
开发一个python工具,pdf转图片,并且截成单个图片,然后修整没用的白边
今天推荐一键款本人开发的pdf转单张图片并截取没有用的白边工具 一、开发背景: 业务需要将一个pdf文件展示在前端显示,但是基于各种原因,放弃了h5使用插件展示 原因有多个,文件资源太大加载太慢、pdf展示兼容性问题、pdf展示效果…...
手机网络卡顿,试试飞行模式
当你遇到某个网页刷新慢或者打不开,而通过切换飞行模式就能解决这个问题,可能的原因有以下几种: 1. 网络连接重置 切换飞行模式会导致你的手机断开当前的网络连接(包括Wi-Fi和移动数据),然后重新建立连接…...
【退役之重学 AI】Ubuntu 安装 Anaconda
一. 下载 安装文件 https://www.anaconda.com/download/success 二. 安装 bash anaconda****.bash 一路 enter,yes 最后一个问你 要不要 conda init,这里得输入yes(默认是no,所以不要直接 enter),否则你…...
flutter 命令
1.查看依赖树 flutter pub deps 2.清理Flutter缓存 flutter clean 3.清理Gradle缓存 ./gradlew cleanBuildCache 4.清理Pub缓存: flutter pub cache repair 5.获取依赖项: flutter pub get 6.更新依赖项: flutter pub upgrade 7.…...
商超仓库管理系统
摘要 随着全球经济和互联网技术的快速发展,依靠互联网技术的各种管理系统逐渐应用到社会的方方面面。各行业的有识之士都逐渐开始意识到过去传统的人工管理模式已经逐渐成为企业发展的绊脚石,不再适应现代企业的发展需要。企业想要得到更好的发展&#…...
校园疫情防控健康打卡系统
摘 要 自疫情出现以来,全世界人民的生命安全和健康都面临着严重威胁。高校是我国培养人才的重要基地,其安全和稳定影响着社会的发展和进步。因此,各高校高度重视疫情防控工作,并在校园疫情防控中引入了健康打卡系统。本论文主要研…...
关于阿里云效流水线自动部署项目教程
1、登录阿里云效:阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台 2、点击左侧流水线: 3、在流水线界面,新建流水线 4、我的是php代码,因此选择php模版 5、创建之后添加流程线源,如下图 6、选择相应的源头。比…...
食品快消品进销存+门店批发+零售商城整体代码输出
食品快消品行业在当今信息化和数字化浪潮中,建立批发零售的信息化系统已成为一种迫切的必要性。通过信息化,食品快消品企业能够实现从生产到销售的全面优化,提高供应链效率,降低运营成本,增强市场竞争力。通过有效的信…...
cocosCreator获取手机剪切板内容
最近游戏中需要加上复制粘贴的功能,这个时候就涉及到安卓原生层的东西。步骤如下: 公开文章地址,见个人博客 复制功能 ts代码 调用代码,在需要复制的地方调用即可。 public static copyToClipBoard(str) {if (sys.platform sy…...
SAP Web IDE 安装使用
For training SAP Web IDE 是基于 Eclipse 内核的在线开发 IDE,可以使用在线的试用版本,但服务器在德国,访问的网速特别慢。也可以使用 Personal Edition,在本机启动和编写代码。 打开官网下载WEBIDE工具包,包含 Tri…...
Excel 常用技巧(六)
Microsoft Excel 是微软为 Windows、macOS、Android 和 iOS 开发的电子表格软件,可以用来制作电子表格、完成许多复杂的数据运算,进行数据的分析和预测,并且具有强大的制作图表的功能。由于 Excel 具有十分友好的人机界面和强大的计算功能&am…...
【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...
23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
【从零学习JVM|第三篇】类的生命周期(高频面试题)
前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 …...
安卓基础(Java 和 Gradle 版本)
1. 设置项目的 JDK 版本 方法1:通过 Project Structure File → Project Structure... (或按 CtrlAltShiftS) 左侧选择 SDK Location 在 Gradle Settings 部分,设置 Gradle JDK 方法2:通过 Settings File → Settings... (或 CtrlAltS)…...
Axure 下拉框联动
实现选省、选完省之后选对应省份下的市区...
