2017-09-26 3 views
0

xlrdを使用してWebからExcelのファイルをPython 3.5.4で開こうとしています。xlrdを使用してhttpウェブサイトから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

関連する問題