首页 > 解决方案 > 使用请求在 Python 中下载 SSRS 报告

问题描述

我正在尝试使用requests下载 SSRS 报告。以下代码将下载一个空的 Excel 文件:

url = 'http://MY REPORT URL HERE/ReportServer?/REPORT NAME HERE&rs:Format=EXCELOPENXML'

s = requests.Session()
s.post(url, data={'_username': 'username, '_password': 'password'})

r = s.get(url)

output_file = r'C:\Saved Reports\File.xlsx'

downloaded_file = open(output_file, 'wb')
for chunk in r.iter_content(100000):
    downloaded_file.write(chunk)

我已经成功地用来requests_ntlm完成这个任务,但我想知道为什么上面的代码没有按预期工作。Excel 文件原来是空的;我觉得这是由于登录并将这些 cookie 传递给GET请求的问题。

标签: pythonreporting-servicespython-requests

解决方案


我能够让它工作,但对于 pdfs。我在这里找到了解决方案

这是我的一段代码片段:

import requests
from requests_ntlm import HttpNtlmAuth

session = requests.Session()
session.auth = HttpNtlmAuth(domain+uid,pwd)
response = session.get(reporturl,stream=True)
print response.status_code
with open(outputlocation+mdcProp+'.pdf','wb') as pdf:
    for chunk in response.iter_content(chunk_size=1024):
        if chunk:
            pdf.write(chunk)
session.close()

推荐阅读