python实现对Excel加密方法

该博客介绍了一个使用Python进行Excel文件加密的方法。通过win32com.client库与Excel应用程序交互,实现了读取Excel文件并设置访问密码的功能。文章还提供了选择文件夹的图形界面,以便批量加密Excel文件。用户可以自定义新密码,并通过程序将密码应用到选定的Excel文件上。

import os, sys
import win32com.client
import time
import hashlib
import tkinter as tk    #调用GUI图形模块

from tkinter import filedialog

def pwd_xlsx(old_filename,new_filename,pwd_str,pw_str=''):
    xcl = win32com.client.Dispatch("Excel.Application")
    # pw_str为打开密码, 若无 访问密码, 则设为 ''
    wb = xcl.Workbooks.Open(old_filename, False, False, None, pw_str)
    xcl.DisplayAlerts = False
 
    # 保存时可设置访问密码.
    wb.SaveAs(new_filename, None, pwd_str, '')
    time.sleep(0)
    wb.Close()
    xcl.Quit()

def read_path(path):
    dirs = os.listdir(path)
    return dirs

def get_file(data_dir):
    f = open(data_dir,'r')
    filelist = f.readlines()
    f.close()
    filename_l=[]
    print(filelist) 
    #return 文件集
    for filename in filelist:
        if '.xlsx' in filename  or '.xls' in filename :
            excelpath = filename.replace("\n","")     
            filename_l.append(excelpath)
    return filename_l

def main():
    
    root = tk.Tk()
    root.withdraw()
    #data_dir = filedialog.askdirectory(title='请选择excel所在文件夹')+'/'  
    data_dir = filedialog.askopenfilename()
    # 将源文件路径里面的文件转换成列表file_list
    file_list = get_file(data_dir)
    dirs='临时文件'
    if not os.path.exists(dirs):
        os.makedirs(dirs)  #输出文件夹
    result_dir =dirs+'/' 

    # 源文件路径
    source = data_dir
 
    # 目标文件路径
    a = 0       # 列表索引csv文件名称放进j_list列表中,索引0即为第一个csv文件名称
    # 建立循环对于每个文件调用excel_to_csv()
    for it in file_list:
        print(it+'开始加密')
        pwd_str = 'qqqqqq'#新密码自定义
        aa = it

        path1=aa.replace("/", "\\")
        path1=path1.replace("\\", "\\\\")
        path1=path1.replace("\\n", "")
        print("path1",path1)
        try:
            pwd_xlsx(path1, path1,pwd_str)
            #pwd_xlsx(path1,pwd_str)
            print(it+'加密完成')
            time.sleep(1)
        except Exception as e:
            print(it+'加密失败,请手动设置')
            pass   
        a = a+1
 
if __name__ == '__main__':
    main()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值