如何在python中检测xlsx文件是否受密码保护?

t98cgbkg  于 2023-05-19  发布在  Python
关注(0)|答案(1)|浏览(274)

我有一个需要的地方,我需要检测是否Excel文件是密码保护或不。如果密码受保护,请向用户询问密码。如何在python中做到这一点?我在网上查了一下,到目前为止没有一个答案有用

zphenhs4

zphenhs41#

我想你可以沿着这条线做点什么。
如果文件被加密,它将通过,并且可以请求密码。
如果不是,则会出错,文件可以正常加载。

import openpyxl
import io
import msoffcrypto
from msoffcrypto.exceptions import FileFormatError  # pip install msoffcrypto-tool

filename = 'foo.xlsx'

with open(filename, 'rb') as file:
    try:
        workbook = io.BytesIO()
        office_file = msoffcrypto.OfficeFile(file)
        print("File is password protected")
        passwd = input("Please enter file password")
        office_file.load_key(password=passwd)
        office_file.decrypt(workbook)
    except FileFormatError as e:
        print(e)
        print("File is not password protected")
        workbook=filename

    wb = openpyxl.load_workbook(workbook)
    ws = wb['Sheet1']

    print(ws['A1'].value)

相关问题