msoffcrypto-tool库 Excel 加密

一、安装 msoffcrypto-tool

注意: 运行前请确保已执行 pip install msoffcrypto-tool。

二、抽取函数

python 复制代码
import pandas as pd
import msoffcrypto
import io
def encrypt_excel_buffer(buffer, filename, password):
    """
    将内存中的 Excel 数据加密并保存到磁盘
    """
    buffer.seek(0)
    office_file = msoffcrypto.OfficeFile(buffer)
    with open(filename, "wb") as f_out:
        office_file.encrypt(password=password, outfile=f_out)
    buffer.close()

三、先将数据全部写进内存 buffer,关闭 writer 后再加密输出到磁盘。

python 复制代码
for i in ['1','2','3']:
    # 1. 创建内存缓冲区
    buffer = io.BytesIO()
    
    # 2. 将数据写入内存缓冲区而不是直接写磁盘
    with pd.ExcelWriter(buffer, engine='openpyxl') as writer:
        # 写入第一个 Sheet
        df_fh = wnrfh[wnrfh['统筹区'] == i]
        df_fh.to_excel(writer, sheet_name='符合导入', index=False)
        
        # 写入第二个 Sheet
        df_tc = wnrtc[wnrtc['统筹区'] == i]
        df_tc.to_excel(writer, sheet_name='存在个单', index=False)
    
    # 3. 调用加密函数,将内存数据变成加密文件保存
    target_filename = f'未缴费纳入统计审核通过-{i}.xlsx'
    encrypt_excel_buffer(buffer, target_filename, password="你的密码")
print("所有统筹区文件已加密生成。")

1.with 语句的作用:

在 with pd.ExcelWriter... 结束时,Pandas 会自动完成 Excel 的结构构建并将其"保存"到 buffer 中。只有在 writer 关闭后,buffer 里的内容才是完整的 Excel 文件。

2.避免磁盘残留:

通过 io.BytesIO(),整个过程中没有任何一个时刻会在磁盘上产生"不带密码"的临时文件,安全性最高。

3.文件名处理:

使用了 Python 的 f-string (f'...'),比 .format() 更简洁,适合 2026 年的主流写法。

4.性能:

此方法在内存中操作,对于几万行以内的数据,速度会比先写磁盘再加密快很多。

相关推荐
小江的记录本2 分钟前
【MySQL】《MySQL日志面试背诵版+思维导图》(核心考点 + MySQL 8.0最新优化)
java·数据库·后端·python·sql·mysql·面试
西洼工作室3 分钟前
Python邮箱工具类封装:高效邮件发送与管理
python·全栈
子午8 分钟前
基于YOLO的水稻害虫检测系统~Python+yolov8算法+深度学习+人工智能+模型训练
人工智能·python·yolo
我命由我1234510 分钟前
Android Framework P2 - 开机启动 Zygote 进程、Zygote 的预加载机制
android·java·开发语言·python·java-ee·intellij-idea·zygote
2401_8504916526 分钟前
PHP 中处理会话数组时的类型错误解析与修复指南
jvm·数据库·python
ㄟ留恋さ寂寞29 分钟前
如何修改数据库实例名_ORACLE_SID环境变量重命名实战
jvm·数据库·python
2401_8504916538 分钟前
使用 curl 调用 Go 标准库 RPC 服务(JSON-RPC 协议详解)
jvm·数据库·python
平常心cyk41 分钟前
OpenAI库的基本使用
python
深度学习lover42 分钟前
<数据集>yolo 笔识别<目标检测>
人工智能·python·yolo·目标检测·计算机视觉·笔识别
熊猫钓鱼>_>43 分钟前
Q-Learning详解:从理论到实战的完整指南
人工智能·python·架构·大模型·llm·machine learning·q-learning