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

问题描述 投票:0回答:1

我需要检测 excel 文件是否受密码保护。如果密码受保护,请向用户询问密码。 我如何在 python 中执行此操作? 我在网上看了一点,到目前为止没有一个有用的答案

python python-3.x openpyxl xlsx password-protection
1个回答
0
投票

我猜你可以按照这些思路做一些事情。
如果文件被加密,它将通过并且可以请求密码。
如果不是,会报错,可以正常加载文件。

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)
© www.soinside.com 2019 - 2024. All rights reserved.