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下载

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

相关推荐
程序员爱钓鱼9 小时前
Python 编程实战 · 实用工具与库 — Flask 路由与模板
前端·后端·python
程序员爱钓鱼9 小时前
Python 编程实战 · 实用工具与库 — Django 项目结构简介
后端·python·面试
新之助小锅9 小时前
java版连接汇川PLC,发送数据,读取数据,保持重新链接,适用安卓
android·java·python
海琴烟Sunshine10 小时前
leetcode 383. 赎金信 python
python·算法·leetcode
大聪明-PLUS13 小时前
如何使用 Docker 打包一个简单的应用程序:简易指南
linux·嵌入式·arm·smarc
深耕AI14 小时前
【完整教程】宝塔面板FTP配置与FileZilla连接服务器
运维·服务器
serve the people15 小时前
Prompts for Chat Models in LangChain
java·linux·langchain
李昊哲小课15 小时前
Ubuntu 24.04 MariaDB 完整安装与配置文档
linux·ubuntu·mariadb
惊讶的猫15 小时前
LSTM论文解读
开发语言·python
无聊的小坏坏16 小时前
从单 Reactor 线程池到 OneThreadOneLoop:高性能网络模型的演进
服务器·网络·一个线程一个事件循环