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

1315

被折叠的 条评论
为什么被折叠?



