使用python中的openpyxl读取存储在sharepoint位置上的xlsx?

使用python中的openpyxl读取存储在sharepoint位置上的xlsx?,python,excel,sharepoint,openpyxl,Python,Excel,Sharepoint,Openpyxl,快一点 我的XLSX文件位于sharepoint驱动器上,无法使用python中的openpyxl打开它,如果它存储在本地驱动器上,则工作正常 我试过这个 from openpyxl import load_workbook wb = load_workbook('https://content.potatocompany.com/workspaces/PotatoTeam/Shared Documents/XYZ errors/XYZ Errors_Confirm.xlsx') 抛出此异常:

快一点

我的XLSX文件位于sharepoint驱动器上,无法使用python中的openpyxl打开它,如果它存储在本地驱动器上,则工作正常

我试过这个

from openpyxl import load_workbook
wb = load_workbook('https://content.potatocompany.com/workspaces/PotatoTeam/Shared Documents/XYZ errors/XYZ Errors_Confirm.xlsx')
抛出此异常:

C:\Anaconda\lib\site-packages\openpyxl\reader\excel.py in load_workbook(filename, use_iterators, keep_vba, guess_types, data_only)
    123     except (BadZipfile, RuntimeError, IOError, ValueError):
    124         e = exc_info()[1]
--> 125         raise InvalidFileException(unicode(e))
    126     wb = Workbook(guess_types=guess_types, data_only=data_only)
    127 

InvalidFileException: [Errno 22] invalid mode ('rb') or filename: 'https://...
我错过什么了吗? 我需要用python阅读其中一张工作表的内容


编辑:

根据克鲁塞尔的建议,我收到了未经授权的401份:

import requests
import urllib
from openpyxl import load_workbook
from requests.auth import HTTPBasicAuth

file = "https://content.potatocompany.com/workspaces/PotatoTeam/Shared Documents/XYZ errors/XYZ Errors_Confirm.xlsx"

username = 'PotatoUser'
password = 'PotatoPassword'

resp=requests.get(file, auth=HTTPBasicAuth(username, password))
print(resp.content)
sharepoint和请求似乎不兼容,既有摘要身份验证,也有基本身份验证
您可能首先需要下载它,而不是直接打开它。以下方法应该有效:

import urllib2
from openpyxl import load_workbook
import StringIO

data = urllib2.urlopen("https://content.potatocompany.com/workspaces/PotatoTeam/Shared Documents/XYZ errors/XYZ Errors_Confirm.xlsx")
xlsx = data.read()
wb = load_workbook(StringIO.StringIO(xlsx))

Python的
StringIO
可用于使下载的数据显示为文件接口。

不要尝试直接从web地址加载,而是尝试使用urllib

import urllib
file = "https://content.potatocompany.com/workspaces/PotatoTeam/Shared Documents/XYZ errors/XYZ Errors_Confirm.xlsx"
urllib.urlretrieve(file,"test.xlsx")
从进一步的研究来看,urllib显然被以下因素所回避。尝试以下方法:

import requests
from requests.auth import HTTPBasicAuth
file = "https://content.potatocompany.com/workspaces/PotatoTeam/Shared Documents/XYZ errors/XYZ Errors_Confirm.xlsx"

username = 'myUsername'
password = 'myPassword'

resp=requests.get(file, auth=HTTPBasicAuth(username, password))
output = open('test.xlsx', 'wb')
output.write(resp.content)
output.close()
要安装请求,请执行以下操作:

pip install requests

如果SP是内部的,则可以通过删除您在
load\u工作簿()
中输入的名称中的“https:”来工作

如果您的工作帐户直接连接到SP,则不进行身份验证。否则,在我的工作中,我们使用NTML身份验证,您可以使用库中的
request\NTML
中的
HttpNtlmAuth
进行身份验证


让我知道它是否有效,或者如果您仍然对这个问题感兴趣,我可以给您举一个
请求\u ntml

的例子,谢谢Martin的建议,但是我得到:560类HTTPRedirectHandler(BaseHandler):HTTPError:HTTP错误400:错误请求我可以在浏览器中打开它,否则我会遇到这样的异常:HTTPError:HTTP Error 401:unauthorized您是否需要通过代理?不,它应该是具有web界面的内部sharepoint位置。除了登录sharepoint的麻烦之外,我认为openpyxl不支持缓冲区接口。出于简单的原因,它仅限于本地可访问的文件。一个正斜杠引发了这个例外:URLError:感谢crussell,这似乎是我的正确方向,现在需要在访问文件时与身份验证请求进行斗争。IOError:('http error',401,'Unauthorized'…文件是否加密?web服务器似乎需要一些身份验证凭据,您是否有网站的用户名和密码?感谢您的建议,crussell,似乎存在无法通过请求处理的身份验证问题。将继续寻找其他方法。我将请看一个带有request\u ntml的示例。我在web浏览器中从SharePoint打开电子表格没有问题,但尝试从python脚本打开电子表格会给我一个403禁止的错误。我缺少什么?
import requests\u ntlm import requests file=”https://ourcompany.sharepoint.com/abcd/5UJJPA3D/FILE“u=r“domain\username”p=“password”resp=requests.get(file,auth=requests\u ntlm.HttpNtlmAuth(u,p))print(resp.content)b'403 probled'
@Calab您好,很遗憾,我不再从事同样的工作了,我不得不离开我的脚本,所以我无法回答您的问题。对不起
from openpyxl import load_workbook
file = '//content.potatocompany.com/workspaces/PotatoTeam/Shared Documents/XYZ errors/XYZ Errors_Confirm.xlsx'
wb = load_workbook(file)