如何使用Python读取受密码保护的Excel文件

c3frrgcw  于 2023-05-23  发布在  Python
关注(0)|答案(1)|浏览(373)

正如标题所说,我的问题是我如何在没有任何用户输入的情况下在python中读取一个受密码保护的excel文件?
我在reddit上找到了一个简单的解决方案,首先解密文件,然后再次加密,然而,它需要用户手动输入密码两次:https://www.reddit.com/r/learnpython/comments/rwy14d/read_passwordprotected_excel_and_save_to/
此外,是否有一种替代方法,可以让您在pandas中读取文件,而无需解密然后加密文件?
Reddit链接:

import win32com.client as win32
#filename should include fill path to file
def unprotect_xlsx(filename, pw_str):
    xcl = win32.Dispatch("Excel.Application")
    wb = xcl.Workbooks.Open(filename, False, False, None, pw_str)
    xcl.DisplayAlerts = False
    wb.SaveAs(filename, None, '', '')
    xcl.DisplayAlerts = True
    xcl.Quit()

def protect_xlsx(filename, pw_str):
    xcl = win32.Dispatch("Excel.Application")
    wb =  xcl.Workbooks.Open(filename)
    xcl.DisplayAlerts = False
    wb.SaveAs(filename, None, '', pw_str)
    xcl.DisplayAlerts = True
    xcl.Quit()
zaqlnxep

zaqlnxep1#

如果所有的文件都有相同的密码,您可以将pandas库与pyxlsb库结合使用。
确保你已经安装了pyxlsb库。您可以使用pip安装它:pip install pyxlsb

import pandas as pd
import pyxlsb

file_path = 'path_to_password_protected_file.xlsb'
sheet_name = 'Sheet1'
password = 'your_password'

with pyxlsb.open_workbook(file_path, password=password) as wb:
    with wb.get_sheet(sheet_name) as sheet:
        data = []
        for row in sheet.rows():
            data.append([item.v for item in row])
            
df = pd.DataFrame(data[1:], columns=data[0])

# Process the dataframe as needed
print(df)

您可以根据自己的具体需要调整代码:)

相关问题