Hướng dẫn how read protected excel file in python? - cách đọc tệp excel được bảo vệ trong python?

Tôi đã xem xét các chủ đề trước đó về chủ đề này, nhưng chúng không giúp giải quyết vấn đề.

  • Cách đọc mật khẩu Excel được bảo vệ trong Python

  • Làm thế nào để mở tệp excel được bảo lưu trong Python với Win32com?

Tôi đang cố gắng mở một tệp được bảo vệ bằng mật khẩu trong Excel mà không có bất kỳ tương tác người dùng nào. Tôi đã tìm kiếm trực tuyến và tìm thấy mã này sử dụng win32com. Khi tôi chạy này, tôi vẫn nhận được lời nhắc để nhập mật khẩu ...

from xlrd import *
import win32com.client
import csv
import sys

xlApp = win32com.client.Dispatch["Excel.Application"]
print "Excel library version:", xlApp.Version
filename,password = r"\\HRA\Myfile.xlsx", 'caa team'
xlwb = xlApp.Workbooks.Open[filename, Password=password]

Đã hỏi ngày 18 tháng 10 năm 2013 lúc 13:25Oct 18, 2013 at 13:25

Tôi không nghĩ rằng các tham số được đặt tên hoạt động trong trường hợp này. Vì vậy, bạn phải làm một cái gì đó như:

xlwb = xlApp.Workbooks.Open[filename, False, True, None, password]

Xem //msdn.microsoft.com/en-us/l Library/Office/FF194819.aspx để biết chi tiết về phương thức Workbooks.open.

Đã trả lời ngày 21 tháng 1 năm 2014 lúc 13:39Jan 21, 2014 at 13:39

Bjorn Stielbjorn StielBjorn Stiel

3.6981 Huy hiệu vàng19 Huy hiệu bạc17 Huy hiệu đồng1 gold badge19 silver badges17 bronze badges

0

Gần đây tôi đã phát hiện ra một thư viện Python làm cho nhiệm vụ này đơn giản.

Nó không yêu cầu excel được cài đặt và, bởi vì đó là Python thuần túy, nó cũng là nền tảng chéo!

MSOFFCRYPTO-tool hỗ trợ các tài liệu Microsoft Office được bảo vệ bằng mật khẩu [được mã hóa], bao gồm định dạng tệp nhị phân XLS cũ hơn.

  • Cài đặt MSOFFCRYPTO-tool:

     pip install msoffcrypto-tool
    
  • Bạn có thể tạo một phiên bản không được mã hóa của sổ làm việc từ dòng lệnh:

    msoffcrypto-tool Myfile.xlsx Myfile-decrypted.xlsx -p "caa team"
    
  • Hoặc, bạn có thể sử dụng MSoffcrypto-tool làm thư viện. Mặc dù bạn có thể viết một phiên bản không được mã hóa vào đĩa như trên, bạn có thể muốn tạo một tệp trong bộ nhớ được giải mã và chuyển nó cho thư viện Python Excel của bạn [openpyxl, xlrd, v.v.].

    import io
    
    import msoffcrypto
    import openpyxl
    
    
    decrypted_workbook = io.BytesIO[]
    
    with open['Myfile.xlsx', 'rb'] as file:
        office_file = msoffcrypto.OfficeFile[file]
        office_file.load_key[password='caa team']
        office_file.decrypt[decrypted_workbook]
    
    # `filename` can also be a file-like object.
    workbook = openpyxl.load_workbook[filename=decrypted_workbook]
    

Đã trả lời ngày 30 tháng 3 năm 2021 lúc 22:13Mar 30, 2021 at 22:13

Eidorbeidorbeidorb

3991 Huy hiệu vàng4 Huy hiệu bạc8 Huy hiệu đồng1 gold badge4 silver badges8 bronze badges

1

Nếu kích thước tệp của bạn nhỏ, bạn có thể lưu nó là ".csv". Và sau đó đọc

Nó đã làm việc cho tôi :]

Đã trả lời ngày 17 tháng 4 năm 2020 lúc 9:38Apr 17, 2020 at 9:38

Cảm ơn bạn rất nhiều vì những câu trả lời tuyệt vời về chủ đề này. Cố gắng đối chiếu tất cả của nó. Yêu cầu của tôi là mở một loạt các tệp Excel được bảo vệ mật khẩu [tất cả đều có cùng một mật khẩu] để tôi có thể thực hiện thêm một số xử lý trên đó. Vui lòng tìm mã bên dưới.

import pandas as pd
import os

from xlrd import *
import win32com.client as w3c
import csv
import sys
from tempfile import NamedTemporaryFile

    df_list=[]
#    print[len[files]]
    for f in files:
#    print[f]
    if['.xlsx' in f]:


        xlwb = xlapp.Workbooks.Open['C:\\users\\files\\'+f, False, True, None, 'password']

        temp_f = NamedTemporaryFile[delete=False, suffix='.csv']  
        temp_f.close[]
        os.unlink[temp_f.name]  

        xlwb.SaveAs[Filename=temp_f.name, FileFormat=xlCSVWindows] 
        df = pd.read_csv[temp_f.name,encoding='Latin-1']  # Read that CSV from Pandas
        df.to_excel['C:\\users\\files\\password_removed\\'+f]
        

      

Đã trả lời ngày 9 tháng 4 năm 2021 lúc 5:52Apr 9, 2021 at 5:52

pnvpnvpnv

1.3573 huy hiệu vàng20 Huy hiệu bạc45 Huy hiệu đồng3 gold badges20 silver badges45 bronze badges

1

Bài Viết Liên Quan

Chủ Đề