Python实战:批量加密Excel文件指南

更多Python学习内容:ipengtao.com

大家好,我是彭涛,今天为大家分享 Python实战:批量加密Excel文件指南,全文3800字,阅读大约10分钟。

在日常工作中,保护敏感数据是至关重要的。本文将引导你通过Python实现批量加密Excel文件的过程,提供丰富的示例代码和详细解释,确保能够轻松应用这一实用技能。

安装所需库

首先,确保已经安装了 openpyxl 库,它是一个强大的处理Excel文件的库。

go 复制代码
pip install openpyxl

加密单个Excel文件

先从加密单个Excel文件开始。以下是一个基本的示例代码:

go 复制代码
from openpyxl import load_workbook
from openpyxl.styles import Protection

def encrypt_excel(file_path, password):
    workbook = load_workbook(file_path)
    for sheet in workbook.sheetnames:
        ws = workbook[sheet]
        ws.protection.sheet = True
        ws.protection.password = password

    encrypted_file_path = file_path.replace(".xlsx", "_encrypted.xlsx")
    workbook.save(encrypted_file_path)

# 使用示例
file_path = "example.xlsx"
password = "securepassword"
encrypt_excel(file_path, password)

这个函数将保护Excel文件中的每个工作表,并使用提供的密码进行加密。加密后的文件会保存在原文件名基础上追加 "_encrypted"。

批量加密多个Excel文件

如果有一个文件夹中的多个Excel文件需要批量加密,我们可以编写一个函数来实现这一任务。

以下是一个示例代码:

go 复制代码
import os

def batch_encrypt_excel(folder_path, password):
    for file_name in os.listdir(folder_path):
        if file_name.endswith(".xlsx"):
            file_path = os.path.join(folder_path, file_name)
            encrypt_excel(file_path, password)

# 使用示例
folder_path = "folder_with_excel_files"
password = "securepassword"
batch_encrypt_excel(folder_path, password)

这个函数遍历指定文件夹中的所有Excel文件,并对每个文件调用之前编写的 encrypt_excel 函数进行加密。

解密Excel文件

当需要查看或编辑加密的Excel文件时,需要提供正确的密码进行解密。

以下是解密的示例代码:

go 复制代码
def decrypt_excel(file_path, password):
    workbook = load_workbook(file_path, read_only=False, keep_vba=True)
    for sheet in workbook.sheetnames:
        ws = workbook[sheet]
        ws.protection.sheet = False
        ws.protection.password = password

    decrypted_file_path = file_path.replace("_encrypted.xlsx", "_decrypted.xlsx")
    workbook.save(decrypted_file_path)

# 使用示例
encrypted_file_path = "example_encrypted.xlsx"
password = "securepassword"
decrypt_excel(encrypted_file_path, password)

这个函数将解密Excel文件中的每个工作表,并使用提供的密码进行解密。解密后的文件会保存在原文件名基础上追加 "_decrypted"。

自定义加密和解密选项

除了基本的加密和解密,可能希望在保护文件时进行一些自定义设置,比如只允许特定操作或者只允许特定用户编辑。Protection 类提供了一些选项,可以根据需求进行定制。

以下是一个示例,演示如何限制对工作表进行排序和筛选的权限:

go 复制代码
from openpyxl.styles import Protection

def custom_encrypt_excel(file_path, password):
    workbook = load_workbook(file_path)
    for sheet in workbook.sheetnames:
        ws = workbook[sheet]
        ws.protection.sheet = True
        ws.protection.password = password
        ws.protection.enableFormatCells = False  # 禁止格式更改
        ws.protection.enableInsertRows = False    # 禁止插入行
        ws.protection.enableSort = False          # 禁止排序
        ws.protection.enableAutoFilter = False    # 禁止自动筛选

    encrypted_file_path = file_path.replace(".xlsx", "_custom_encrypted.xlsx")
    workbook.save(encrypted_file_path)

# 使用示例
file_path = "example.xlsx"
password = "securepassword"
custom_encrypt_excel(file_path, password)

使用 getpass 模块隐藏密码输入

为了提高安全性,你可以使用 getpass 模块隐藏密码的输入过程,确保密码不会明文显示在终端上。

以下是一个示例代码:

go 复制代码
from getpass import getpass

def get_password():
    return getpass("Enter the password: ")

# 使用示例
password = get_password()
print("Password entered:", password)

在实际应用中,可以调整代码以在加密/解密操作中使用 get_password 函数,保障密码的安全性。

异常处理

在实际应用中,始终要考虑到潜在的错误。在文件操作中,文件可能不存在、密码错误等情况都是需要处理的异常。

以下是一个简单的异常处理示例:

go 复制代码
from openpyxl import load_workbook
from openpyxl.utils.exceptions import InvalidFileException

def encrypt_excel(file_path, password):
    try:
        workbook = load_workbook(file_path)
        for sheet in workbook.sheetnames:
            ws = workbook[sheet]
            ws.protection.sheet = True
            ws.protection.password = password

        encrypted_file_path = file_path.replace(".xlsx", "_encrypted.xlsx")
        workbook.save(encrypted_file_path)
        print(f"Encryption successful. Encrypted file saved at: {encrypted_file_path}")

    except InvalidFileException:
        print(f"Error: Invalid file format. Please provide a valid Excel file.")
    except Exception as e:
        print(f"An unexpected error occurred: {e}")

# 使用示例
file_path = "nonexistent_file.xlsx"
password = "securepassword"
encrypt_excel(file_path, password)

通过合理的异常处理,你可以更好地应对各种可能发生的问题,提高脚本的鲁棒性。

安全注意事项

  • 密码管理: 确保安全地管理密码,不要将密码明文存储在脚本或其他不安全的地方。

  • 备份文件: 在加密或解密操作前,最好先备份原始文件,以防不测之需。

总结

在这篇文章中,深入研究了如何通过Python实现批量加密和解密Excel文件,为保护敏感数据提供了全面的指南。我们从安装必要的库、加密单个文件,到批量加密多个文件和解密文件,甚至介绍了如何自定义加密选项和提高安全性。示例代码详细演示了每个步骤的操作,能够轻松应用这一实用技能。

除了基础的操作外,还介绍了一些高级主题,如自定义加密选项,通过 getpass 模块隐藏密码输入,以及合理的异常处理。这些补充内容更好地理解并应用于实际场景中。

通过本文,不仅能够加密和解密Excel文件,还能够根据需求进行一些高级的定制。在日常工作中,这项技能可用于确保数据的安全性,同时提供了灵活的数据处理手段。

如果你觉得文章还不错,请大家 点赞、分享、留言 下,因为这将是我持续输出更多优质文章的最强动力!

更多Python学习内容:ipengtao.com

干货笔记整理

100个爬虫常见问题.pdf ,太全了!

Python 自动化运维 100个常见问题.pdf

Python Web 开发常见的100个问题.pdf

124个Python案例,完整源代码!

PYTHON 3.10中文版官方文档

耗时三个月整理的《Python之路2.0.pdf》开放下载

最经典的编程教材《Think Python》开源中文版.PDF下载

点击"阅读原文",获取更多学习内容

相关推荐
TracyDemo6 小时前
excel 透视图怎么进行删除透视图
excel
骆驼爱记录6 小时前
Excel邮件合并嵌入图片技巧
自动化·word·excel·wps·新人首发
VekiSon6 小时前
Linux内核驱动——基础概念与开发环境搭建
linux·运维·服务器·c语言·arm开发
言無咎6 小时前
从规则引擎到任务规划:AI Agent 重构跨境财税复杂账务处理体系
大数据·人工智能·python·重构
张小凡vip7 小时前
数据挖掘(十)---python操作Spark常用命令
python·数据挖掘·spark
U盘失踪了7 小时前
Reqable 导出响应数据
python
2301_790300967 小时前
数据分析与科学计算
jvm·数据库·python
zl_dfq7 小时前
Linux 之 【进程信号】(signal、kill、raise、abort、alarm、Core Dump核心转储机制)
linux
程序员小远7 小时前
使用Postman进行一次完整的接口测试
自动化测试·软件测试·python·测试工具·测试用例·接口测试·postman
Yvonne爱编码7 小时前
JAVA数据结构 DAY1-集合和时空复杂度
java·数据结构·python