2017-09-26 7 views
0

Je tente d'ouvrir un fichier Excel à partir du Web en utilisant xlrd, en Python 3.5.4.Ouverture d'un fichier Excel à partir du site http à l'aide de xlrd

import requests 
import xlrd 
import urllib 

link='http://www.bla.com/bla.xlsx' 
request = urllib.request.urlretrieve(link) 
workbook = xlrd.open_workbook(request) 

Je reçois cette erreur.

TypeError: invalid file: ('0xlxs', <http.client.HTTPMessage object at 0x04600590>) 

Quelqu'un at-il un indice?

Merci!

+0

Est-ce fichier XLSX 'http: // www.bla.com/bla.xlsx' vraiment disponible? –

Répondre

0

L'urlretrieve renvoie un tuple, pas la teneur en url.

urllib.request.urlretrieve (URL, nom de fichier = Aucun, reporthook = None, data = Aucun)

Renvoie un tuple (nom de fichier, les en-têtes) où le nom de fichier est le nom de fichier local sous lequel l'objet peut find, et headers est la méthode info() retournée par urlopen() pour un objet distant.

import requests 
import xlrd 
import urllib 

link = 'https://raw.githubusercontent.com/SheetJS/test_files/a9c6bbb161ca45a077779ecbe434d8c5d614ee37/AutoFilter.xls' 
file_name, headers = urllib.request.urlretrieve(link) 
print (file_name) 
workbook = xlrd.open_workbook(file_name) 
print (workbook) 
+0

A travaillé .... Merci! – Robson

0

Une opération de ce type pourrait fonctionner.

import urllib2 

req = urllib2.Request('http://www.bla.com/bla.xlsx') 
response = urllib2.urlopen(req) 
workbook = xlrd.open_workbook(response.read()) 
+0

urllib2 est pour python 2.x. Mais merci quand même! – Robson

+0

La même fonctionnalité existe dans Python 3 sous urllib à la place: from urllib.request import urlopen – Dan