在Python中的XLRD和HTTP Excel文件

我可以直接从HTTP位置读取与xlrd一起使用吗?

我已经尝试了以下内容:

import ntlm, urllib2 url = 'http://myurl/file.xls' passman.add_password(None, url, login, password) auth_NTLM = HTTPNtlmAuthHandler.HTTPNtlmAuthHandler(passman) opener = urllib2.build_opener(auth_NTLM) sock = urllib2.urlopen(url) content = sock.read() 

并具有读取Excel文件并返回一些数据的ReadFromExcel函数,但无法读取内容。

 ReadFromExcel(content) book = xlrd.open_workbook(filename) File "C:\Python27\lib\site-packages\xlrd\__init__.py", line 400, in open_workbook f = open(filename, "rb") TypeError: file() argument 1 must be encoded string without NULL bytes, not str 

有任何想法吗?

您应该传递文件名称而不是文件内容:

 import os import tempfile with tempfile.NamedTemoraryFile(suffix='.xls') as file: file.write(content) file.delete = False try: result = ReadFromExcel(file.name) finally: os.remove(file.name) 

或者使用file_contents参数 。