14

このトピックに関する以前のスレッドを見ましたが、問題の解決には役立っていません。

ユーザーの操作なしで、パスワードで保護されたファイルを Excel で開こうとしています。オンラインで検索したところ、win32com.client を使用するこのコードが見つかりました。これを実行すると、パスワードを入力するプロンプトが表示されます...

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)
4

5 に答える 5

20

この場合、名前付きパラメーターが機能するとは思いません。したがって、次のようにする必要があります。

xlwb = xlApp.Workbooks.Open(filename, False, True, None, password)

Workbooks.Open メソッドの詳細については、http://msdn.microsoft.com/en-us/library/office/ff194819.aspxを参照してください。

于 2014-01-21T13:39:14.187 に答える
6

私は最近、この作業を簡単にする Python ライブラリを発見しました。

Excel をインストールする必要はありません。純粋な Python であるため、クロスプラットフォームでもあります。

msoffcrypto-toolは、古い XLS バイナリ ファイル形式を含む、パスワードで保護された (暗号化された) Microsoft Office ドキュメントをサポートします。

  • msoffcrypto ツールをインストールします。

     pip install msoffcrypto-tool
    
  • コマンド ラインからワークブックの暗号化されていないバージョンを作成できます。

    msoffcrypto-tool Myfile.xlsx Myfile-decrypted.xlsx -p "caa team"
    
  • または、msoffcrypto-tool をライブラリとして使用できます。上記のように暗号化されていないバージョンをディスクに書き込むこともできますが、復号化されたインメモリ ファイルを作成し、これを Python Excel ライブラリ ( 、 など) に渡すことをお勧めしopenpyxlますxlrd

    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)
    
于 2021-03-30T22:13:53.243 に答える
0

Linux システムを使用している場合は、Openpyxl パッケージが機能します。パスワードを設定してファイルを保護し、同じパスワードを使用してファイルを開くことができます。

詳細情報: https://www.quora.com/How-do-I-open-read-password-protected-xls-or-xlsx-Excel-file-using-python-in-Linux

于 2019-06-19T07:41:00.817 に答える