2010-09-24 4 views
1

Je suis nouveau à la programmation de python, et je suis en train de lire un fichier protégé par mot en utilisant python, le code est illustré ci-dessous:lire le mot de passe protégé excel en python

import sys 
import win32com.client 

xlApp = win32com.client.Dispatch("Excel.Application") 
print "Excel library version:", xlApp.Version 
filename,password = 'C:\myfiles\foo.xls', 'qwerty12' 
xlwb = xlApp.Workbooks.Open(filename, Password=password) 

Mais le fichier xls est chargé mais toujours m'inviter à fournir le mot de passe, je ne peux pas laisser python pour entrer le mot de passe pour moi.

Qu'ai-je fait de mal? Merci!

Répondre

2

Ouvrir prend deux types de mot de passe, à savoir:

Password: password required to open a protected workbook. 
WriteResPassword : password required to write to a write-reserved workbook 

Donc, dans votre cas, il est protégé en écriture ou la protection à l'ouverture?

Il y a également une discussion sur le SO qui dit que cela ne fonctionne pas avec les paramètres nommés, essayez donc fournir toutes les valeurs de paramètres avec les valeurs par défaut

Les valeurs par défaut sont documentées dans MSDN

+0

Je ne suis pas sûr, je reçois juste une invite lorsque j'essaie d'ouvrir le fichier xls, comment puis-je le savoir? Merci! – lokheart

+0

@lokheart: si vous obtenez l'invite pour ouvrir les fichiers et ne passez pas le mot de passe et il ouvre le fichier Excel en mode lecture seule, il est seulement protégé en écriture. Voir ma réponse éditée, il semble que les paramètres nommés ne fonctionnent pas. Faites-moi savoir, si la réponse vous aide. – pyfunc

+0

Je l'ai corrigé en utilisant: xlwb = xlApp.Workbooks.Open (nom de fichier, 0, True, None, mot de passe) Mais je ne comprends pas très bien les 2èmes paramètres de Workbooks.Open, qu'est-ce que c'est? Merci! – lokheart

2

Utilisez cette option pour ouvrir le fichier protégé par mot

xlwb = xlApp.Workbooks.Open (nom de fichier, faux, vrai, Aucun, mot de passe)

J'espère que cela fonctionne. Cela a fonctionné pour moi.

Questions connexes