将.iqy文件中的数据导入到Pandas

5
我有几个从Sharepoint查询数据的.iqy文件。我需要在Python Pandas中将它们合并和处理。Python有没有办法做到这一点?我知道Python Sharepoint library存在,但我试图避免通过Python设置自己的连接,而是依赖于.iqy文件。有什么想法吗?
为了问题的简化,假设表格长这样:
+------+------+
| col1 | col2 |
+------+------+
|    1 |    2 |
|    3 |    4 |
+------+------+

此外,我也愿意接受非Python解决方案,以自动运行.iqy查询并将数据转换为Python可读格式(例如.csv)。不过我不确定这种方法的具体实现方式。


是的,只要文件是表格格式,pandas 就可以读取任何文件。但是我不知道你的“iqy”文件长什么样子(因为你没有给我看),所以无法帮助你。 - cs95
1
.iqy文件包含一个查询。您可以在Excel中打开它,它将查询数据并以表格格式呈现(请参见我的新编辑)。我正在寻找一种方法来执行查询并将数据读入Pandas。 - tgordon18
作为您“开放非Python解决方案”的选择:您可以创建一个带有VBA函数的XLSM(或XLSB)文件,该函数打开.iqy文件,进而执行查询并打开/保存CSV文件以进行进一步处理。 - Joe Phi
1个回答

1
这是一个简单的 hacky 方法:

import requests_ntlm
import requests

url = 'https://..../owssvr.dll?XMLDATA=...'
print('downloading...')
r = requests.get(url, auth=requests_ntlm.HttpNtlmAuth(LOGIN, PASSWORD), verify=False)

print('saving...')
with open('download.xml', 'wb') as file:
    file.write(r.content)

几点说明:

  1. url 在 *.iqy 文件中(通常非常长)。您可以通过 "notepad" 手动提取它,或者使用 python 解析它。
  2. 您将获得 xml 文件,要将其转换为 pandas dataframe,请参阅: 如何将 XML 文件转换为漂亮的 pandas dataframe?

1
我遇到了一个“403 Forbidden”的错误,可能是因为我的Sharepoint访问在MFA的SSO后面。这不容易。 - Jean-Francois T.
@Jean-FrancoisT. 或许这个链接可以帮助解决403问题:https://sharepoint.stackexchange.com/questions/229517/rest-api-403-forbidden-when-trying-to-get-formdigest-in-python - Quant Christo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接