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.性能:

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

相关推荐
DevnullCoffe11 分钟前
Open Claw × 跨境电商:5个最有价值的 AI Agent 应用场景深度拆解
python·api
zh路西法25 分钟前
【宇树机器人强化学习】(六):TensorBoard图表与手柄遥控go2测试
python·深度学习·机器学习·机器人
szcsun527 分钟前
关于在pycharm中新建项目创建虚拟化环境venv
ide·python·pycharm
码路飞28 分钟前
体验完阿里「悟空」之后,我花 2 小时用 Python 撸了个 AI Agent 🔥
python·aigc
万里沧海寄云帆38 分钟前
pytorch+cpu版本对Intel Ultra 9 275HX性能的影响
人工智能·pytorch·python
java资料站1 小时前
python爬虫入门
python
1941s1 小时前
Google Agent Development Kit (ADK) 指南 第二章:环境搭建与快速开始
人工智能·python·adk·google agent
天下无贼1 小时前
【Python】2026版——FastAPI 框架快速搭建后端服务
后端·python·aigc
小蚂蚁i1 小时前
LangChain 完全学习手册:看完就能上手
后端·python·ai编程
Aawy1202 小时前
Python生成器(Generator)与Yield关键字:惰性求值之美
jvm·数据库·python