2017-09-26 90 views
0

我试图在Python 3.5.4中使用xlrd从web打开excel文件。从http网站使用xlrd打开excel

import requests 
import xlrd 
import urllib 

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

我得到这个错误。

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

任何人都有提示吗?

谢谢!

+0

这是XLSX文件'的http:// www.bla.com/bla.xlsx'真货吗? –

回答

0

urlretrieve返回一个元组,而不是url内容。

urllib.request.urlretrieve(URL,文件名=无,reporthook =无,数据=无)

返回的元组(文件名,标头),其中文件名是本地文件名在其下对象可以被找到,并且标头是urlopen()返回的对象的info()方法返回的(对于远程对象)。

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

Worked ....谢谢! – Robson

0

像这样的东西可能会起作用。

import urllib2 

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

urllib2适用于python 2.x.不过谢谢! – Robson

+0

Python 3中存在相同的功能,而不是urllib:from urllib.request import urlopen – Dan