使用Python将SSRS报告导出为PDF

4

我想从Python中导出/打印/generate SSRS报告。看起来SSPYRS应该完全符合我的要求。然而,我遇到了一个错误,无法找到解决方法。

import sspyrs
try:   
   username= "user"
   password = "pass"
   params_multi = {'param1': value1, 'param2': value2, 'param3': value3}
   myrpt = sspyrs.report("http://sqlserver/reportingserrver/reportsfolder/reportname", username, password, params_multi).download('PDF',fileloc)
except Exception as ex:
   template = "An exception of type {0} occurred. Arguments:\n{1!r}"
   message = template.format(type(ex).__name__, ex.args)

我遇到了如下错误:

报表服务器不允许使用的数据导出方法。请更新服务器设置/版本以启用XML、Excel或CSV导出。

当我从浏览器运行相同的报告时,一切正常。我也可以在.NET应用程序中无问题地访问它,因此我怀疑这不是权限问题。
我检查了SQL Server上的reportserver.config文件,并启用了PDF渲染。我不确定还能在哪里查看。
如有帮助指导,将不胜感激。

你的 params_multi 赋值缺少单引号吗?('param3) 还是你只是复制/粘贴错误了? - LaraRaraBoBara
@FembotDBA。只是一个打字错误。感谢您指出。 - goryef
我尝试使用sspyrs模块进行了一些尝试并获得了相同的结果。也许我应该给作者写一封电子邮件或者使用链接下载文件,然后采用另一种Python方法? - LaraRaraBoBara
@FembotDBA。谢谢你的尝试。我在url导出方面没有太多运气。我需要能够将PDF文件放置在特定位置,但找不到该选项。你知道其他Python方法来完成这个任务吗? - goryef
1个回答

4

所以我不得不使用NTLM身份验证来使它在我的环境中正常工作。也许你可以使用和/或修改这个?我是一个SQL人员,不是Python,但是我试一下:

import requests
from requests_ntlm import HttpNtlmAuth

#change username to your username
filename = 'C:\\Users\\username\\Desktop\\report.pdf'

#change username and password to your network login
username = "username"
password = "password"
#url needs to be the special url found by going to the ReportServer, the one with &rs:Command=Render
url = "http://reportservername/ReportServer%2fReportFolder%2fReportName&rs:Command=Render&rs:Format=PDF"

r = requests.get(url, auth=HttpNtlmAuth(username, password))

print(r.status_code)

if r.status_code == 200:
    with open(filename, 'wb') as out:
        for bits in r.iter_content():
            out.write(bits)

这篇文章帮了我很多:https://www.reddit.com/r/Python/comments/67xak4/enterprise_intranet_authentication_and_ssrs/

1
现在很好了。非常感谢您花费的所有时间来帮助我。 - goryef

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