Search code examples
pythonexcelxlrd

Open an excel from http website using xlrd


I trying to open an excel file from web using xlrd, in Python 3.5.4.

import requests
import xlrd
import urllib

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

I'm getting this error.

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

Anyone have a hint?

Thanks!


Solution

  • The urlretrieve returns a tuple, not the url content.

    urllib.request.urlretrieve(url, filename=None, reporthook=None, data=None)

    Returns a tuple (filename, headers) where filename is the local file name under which the object can be found, and headers is whatever the info() method of the object returned by urlopen() returned (for a remote object).

    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)