使用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.LockedWorksheet.Columns[index].Style.Locked属性。具体步骤如下:

  • 创建Workbook类的实例。
  • 使用Workbook.LoadFromFile()方法加载Excel文件。
  • 使用Workbook.Worksheets[index]属性获取特定工作表。
  • 使用Worksheet.Cells属性获取工作表的单元格集合。
  • 循环遍历单元格,并取消所有单元格的锁定状态 (Excel中所有单元格的锁定状态默认是选中的)。
  • 使用Worksheet.Rows[index].Style.LockedWorksheet.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种不同的场景。希望对你有帮助。

本文完结-

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/707986.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

移植fatfs制作内存文件系统

本文目录 1、引言2、环境准备2.1 下载源码2.2 创建一个工程 3、移植3.1 修改配置3.2 修改diskio.c3.3 编写RAM驱动3.4 编写验证代码 4、验证 文章对应视频教程: 暂无,可以关注我的B站账号等待更新。 点击图片或链接访问我的B站主页~~~ 1、引言 在嵌入式…

GaN VCSEL:工艺革新引领精准波长控制新纪元

日本工程师们凭借精湛的技艺,开创了一种革命性的生产工艺,让VCSEL的制造达到了前所未有的高效与精准。这一成果由名城大学与国家先进工业科学技术研究所的精英们联手铸就,将氮化镓基VCSELs的商业化进程推向了新的高峰。它们将有望成为自适应前…

【Effective Web】常见的css居中方式

CSS居中方式 水平居中 text-align:center 适用范围:容器中都是行内元素 缺点:容器内所有元素都会居中,如果是文本描述需要左对齐,需要增加text-align:left覆盖 margin: 0 auto 适用范围:容器宽度固定。子元素宽度…

Linux-黑马程序员

目录 一、前言二、初识Linux1、操作系统(1)硬件和软件(2)操作系统 2、Linux3、虚拟机4、FinalShell5、WSL6、虚拟机快照 三、Linux基础命令1、Linux的目录结构2、Linux命令入门(1)Linux命令基础格式&#x…

优雅谈大模型11:Mistral

大模型技术论文不断,每个月总会新增上千篇。本专栏精选论文重点解读,主题还是围绕着行业实践和工程量产。若在某个环节出现卡点,可以回到大模型必备腔调或者LLM背后的基础模型新阅读。而最新科技(Mamba,xLSTM,KAN)则提…

tcp协议机制的总结(可靠性,提高性能),基于tcp的应用层协议,用udp如何实现可靠传输

目录 总结 引入 可靠性 ​编辑 分析 三次握手 提高性能 其他 常见的基于tcp应用层协议 用udp实现可靠传输 总结 引入 为什么tcp要比udp复杂的多? 因为它既要保证可靠性,又要兼顾性能 可靠性 分析 其中,序列号不止用来排序,还可以用在重传时去重 确认应答是机制中的…

618有什么值得推荐?2024数码产品推荐,轻松拿捏选购!

随着618购物节即将来临,你是否已被琳琅满目的商品所吸引,难以抉择?团团特意为你筛选出一系列经过亲身试验的优质好物,旨在帮助你在这场购物盛宴中迅速锁定心仪之选。这些推荐不仅走在时尚的前沿,更能满足你日常生活的各…

AUTOSAR学习

文章目录 前言1. 什么是autosar?1.1 AP(自适应平台autosar)1.2 CP(经典平台autosar)1.3 我的疑问 2. 为什么会有autosar3.autosar的架构3.1 CP的架构3.1.1 应用软件层3.1.2 运行时环境3.1.3 基础软件层 3.2 AP的架构 4. 参考资料 …

软件测试分类介绍

大家好,软件测试是确保软件质量的关键环节之一,通过对软件系统的各个方面进行测试,可以发现和解决潜在的问题,提高软件的稳定性、可靠性和用户满意度。在软件测试领域,根据测试的目的、方法和对象的不同,可…

LLM大模型的挑战与未来,挑战大但是机遇更大!

大模型必然是未来很长一段时间我们工作生活的一部分,而对于这样一个与我们生活高度同频互动的“大家伙”,除了性能、效率、成本等问题外,大规模语言模型的安全问题几乎是大模型所面对的所有挑战之中的重中之重,机器幻觉是大模型目…

揭秘!wifi贴项目市场到底怎么样??

在共享经济市场中WiFi贴这个看似微小的项目,正逐渐散发出它独特的光芒。它的出现既充满了希望又伴随着疑惑:WiFi贴项目的真正面貌究竟如何?让我们一同揭开这神秘面纱。 首先,我们必须理解WiFi贴的本质:它由微火的罗经理…

【每日刷题】Day63

【每日刷题】Day63 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. 414. 第三大的数 - 力扣(LeetCode) 2. 2265. 统计值等于子树平均值的节点数…

农业领域科技查新点提炼方法附案例!

农业学科是人类通过改造和利用生物有机体(植物、动物、微生物等)及各种自然资源(光、热、水、土壤等)生产出人类需求的农产品的过程,人类在这一过程中所积累的科学原理、技术、工艺和技能,统称为农业科学技术,该领域具有研究范围广、综合性强…

音乐APP界面设计步骤详解

伴随着互联网的迅速发展,许多与因特网相关的职位应运而生,UI界面设计师是因特网的核心职位之一。UI界面设计已经渗透到我们生活的方方面面,包括网站、应用程序或其它数字平台上的按钮、菜单布局、配色方案和排版。很多人认为 UI界面设计只是关…

计算机图形学入门12:纹理映射

1.问题 如上图所示,前面的内容已经知道怎么对物体进行着色,在球和地板上出现了不同的颜色,也就是定义了不同的kd颜色系数,那么如何在物体不同位置定义不同属性呢? 2.纹理映射 2.1什么是纹理映射 如上图球的表面贴上一…

探索Jetpack Compose中的高效导航库:Voyager项目

探索Jetpack Compose中的高效导航库:Voyager项目 在Jetpack Compose中实现高效、可扩展的导航是每个开发者的追求。Voyager作为一个多平台导航库,不仅与Jetpack Compose无缝集成,还提供了一套务实的API,帮助开发者创建单活动应用…

tvm实战踩坑

今天玩了一下tvm的安装 我要安装v0.14.0的版本 所以按照官网的方法 https://tvm.apache.org/docs/install/from_source.html#python-package-installation git clone --recursive https://github.com/apache/tvm tvmgit checkout v0.14.0recursive是很重要的 这一步可以替换成…

显卡GPU、CUDA、Pytorch版本对应即下载安装

显存大于4G的建议使用GPU版本的pytorch,低于4G建议使用CPU版本pytorch,直接使用命令安装对应版本即可 GPU版本的pytorch的使用需要显卡支持,需要先安装CUDA,即需要完成以下安装 1.查看显卡GPU支持的CUDA版本(最高&…

Flutter系列:关于ensureInitialized()

Flutter系列 关于ensureInitialized() - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/qq_28…

vue3 proxy对象转为原始对象

https://cn.vuejs.org/api/reactivity-advanced.html#toraw import { toRaw } from "vue";const foo {} const reactiveFoo reactive(foo)console.log(toRaw(reactiveFoo) foo) // true 人工智能学习网站 https://chat.xutongbao.top