美文网首页
Python 禁止编辑 Excel 只读加密小工具

Python 禁止编辑 Excel 只读加密小工具

作者: 辣辣不乖 | 来源:发表于2021-12-19 20:18 被阅读0次

需求

实际用途也是奇葩,为避免二次修改作弊,追责明确,单位要求各业务部门银行支付表(只读)模式发给财务,财务仅负责支付,结果部门太多,Excel 版本多到令人发指,甚至还有WPS,很多人不会设置禁止编辑!

用途

加密 Excel 和 WPS 电子表格 . . .


1KkZzEYz0qoAhW7.jpg

简陋的代码

import os
# import sys
import win32com.client
import PySimpleGUIWx as sg

# base_dir = os.path.dirname(__file__) # 获取当前文件目录

sg.theme('DarkBlue3')  # please make your creations colorful

def pwd_xlsx(old_filename,new_filename):
    try:
        xcl = win32com.client.DispatchEx("Excel.Application")
        wb = xcl.Workbooks.Open(old_filename)
        xcl.DisplayAlerts = False
        for sh in wb.Sheets:
            ws = xcl.Worksheets(sh.Name)
            ws.Protect('33818121')
        wb.SaveAs(new_filename)
        xcl.Quit()
    except:
        window['-OUTPUT-'].update('处理失败,请关闭所有正在编辑的文件后重试!', text_color='red')
    else:
        window['-OUTPUT-'].update('操作成功,新文件名为' +  '「Lock + 源文件名 」!', text_color='green')

layout = [  [sg.Text('Excelockedit ©lala.', text_color='yellow')],
            [sg.Text(font = ('Helvetica', 3))],
            [sg.Input(), sg.FileBrowse('选择文件')], 
            [sg.Text('仅支持「xls」和「xlsx」文件锁定', key='-OUTPUT-')],
            [sg.Text(font = ('Helvetica', 3))],
            [sg.OK('锁定'), sg.Cancel('退出')]]

# 透明度50% alpha_channel=.5
window = sg.Window('Get filename example', layout, no_titlebar=True, grab_anywhere=True)

while True:
    event, values = window.read()
    print(event, values)
    fname = values[0]
    if event == sg.WIN_CLOSED or event == '退出':        
        break     
    if event == '锁定':
        if not fname:
            window['-OUTPUT-'].update('请先选择文件再进行操作!', text_color='red')
        else:
            old_filename = fname
            dir_path = os.path.dirname(fname)
            new_filename = os.path.join(dir_path, 'Lock' + os.path.basename(fname)) # 获取文件拼接后的路径
            pwd_xlsx(old_filename,new_filename)
window.close()

# 若设置文件访问密码请参考以下函数(即先输入密码才能查看内容)
# def pwd_xlsx(old_filename,new_filename,pwd_str,pw_str=''):
#     xcl = win32com.client.DispatchEx("Excel.Application")
#     # pw_str为打开密码, 若无 访问密码, 则设为 ''
#     wb = xcl.Workbooks.Open(old_filename, False, False, None, pw_str)
#     # wb = xcl.Workbooks.Open(old_filename)
#     xcl.DisplayAlerts = False
#     for sh in wb.Sheets:
#         ws = xcl.Worksheets(sh.Name)
#         ws.Protect('123')
#         #print(ws)
#     #ws = wb.Worksheets(1)
#     #ws.Protect('123')
#     # 保存时可设置访问密码.
#     wb.SaveAs(new_filename, None, pwd_str, '')
#     xcl.Quit()

编译 Win 版本

总不能每台电脑去安装运行环境,于是就编译好了 EXE 版本 , 然后发单位群共享,全民皆大欢喜。

下载地址

诚通网盘(访问密码:1024),有类似需求朋友的去下载吧,全当请我喝杯咖啡了。

相关文章

网友评论

      本文标题:Python 禁止编辑 Excel 只读加密小工具

      本文链接:https://www.haomeiwen.com/subject/qfwzfrtx.html