SSRS自动从标准内置接口导出PDF

3
我们的组织有许多自定义的SSRS报告,我们从SSRS内置界面运行这些报告——用户可以查看和设置参数,然后点击“查看报告”以生成默认的HTML渲染结果。然后出现小工具栏,允许他们将报告导出为PDF、Excel等格式。
我知道许多组织编写自己的报告生成界面,然后将参数传递给SSRS,并返回所需格式的报告。在探索这条路之前,我们想看看通过“黑客攻击”内置界面我们能做些什么。
坚持使用SSRS内置界面的优点是,我们可以编写具有参数的报告,其值/选择取决于先前选择的参数。例如,如果我有两个报告参数——“学年”和“学校名称”,我可以使“学校名称”的下拉选择列表根据用户为第一个参数“学年”选择的内容而改变;我可以在SSRS内部完成这个操作,而不需要雇用程序员编写自定义报告选择/生成界面。
但我无法通过标准界面自动化导出PDF报告,这是在用户选择参数并单击“查看报告”之后。但今天我遇到的一些帖子让我相信,我们可能可以通过编辑SSRS服务器上的“ReportViewer.apsx”文件来黑掉标准SSRS界面。 点击此处 查看如何黑掉此文件以向“查看报告”按钮添加额外功能的示例。
因此,所有精通javascript的大神们,你们能想出一种方法来黑掉SSRS内置的“查看报告”按钮,以便自动提交参数并返回PDF格式报告吗?(如果需要jQuery,我们可以添加一个引用)。

你的网站平台是什么? - Marco Bong
我假设SSRS在Microsoft IIS上运行其内置接口。因为有.aspx文件和其他一些东西。 - Baodad
1个回答

4
我即将告诉您的答案可能不是您想要的,但我认为这可能是您需要听到的答案。您请求他人帮助的方式实际上并不是最佳做法,原因有很多。以下是其中的一些原因:
1. 如果您找到一种适应SSRS配置和源文件(例如ReportViewer.aspx)的方法,这样的更改将改变整个报表服务器上生成任何和所有报表的方式。例如,您将无法使用SSRS界面以MHTML格式生成具有动态参数的报表。
2. ReportViewer.aspx页面当前未设置为显示PDF。要获取PDF,必须使用SSRS工具栏中的导出功能或使用rs:Format参数,两者都会下载PDF报表。
3. 您说您不想雇用程序员来构建自定义界面,而是想要破解SSRS应用程序的核心文件。如果您没有开发人员来维护更改并处理出现的任何意外问题,这似乎是一个相当糟糕的做法。
我猜想此时我已经引起了你的注意,或者你已经将我的回答投下否定票了。所以这里提供一些不需要入侵SSRS的替代方案。 为用户提供链接以在所需格式中打开报告 可以完全构建利用SSRS参数的报告,并提供用户链接,通过点击链接即可生成指定格式的文件。例如,我们所有的仪表板都有一个“打印此页”的链接,就可以生成一个包含所有相关报告参数的PDF文件。
具体例子:我们对员工的仪表板显示基于某项业务需要的前X条记录,然后在该部分底部提供一个链接到一个包含所有记录的PDF报告中。PDF会将仪表板上已输入的任何参数值传递到PDF报告中,使用户体验更加顺畅。
此外,您可以构建和自定义我所称的“门户报告”,以从最小量的数据中加载,以减少加载时间。对我来说,“门户报告”基于上游报告中的参数值或门户报告中的报告参数为用户提供少量相关信息。然后,提供链接允许用户生成包含特定数据集的文件,以任何需要的格式。下面是我用来为老板制作东西的简化示例的屏幕截图。它读取当前系统时间,并通过单击按钮生成不同格式的可用报告。信不信由你,您所看到的页面以及所有数据集都是一个报告的一部分。

Using links to control render format

此外,您可以通过控制用户看到的SSRS工具栏选项来控制用户导出哪种类型的文件。您可以使用rc:StyleSheet更改默认的StyleSheet或提供自己的自定义StyleSheet,以禁用SSRS工具栏的打印按钮(现在很少使用)或导出或查找功能。这是一个关于如何完成此操作的technet链接。
最后,如果您具有JavaScript知识和一些vb.net或c#.net专业知识,您可以使用一个网页处理特定情况,该网页从系统中查询最少量的数据,并为用户提供下拉列表,然后提供生成报表的链接,格式可以是您希望的任何格式。这些面向项目的一次性网页比完全灵活的.NET SSRS界面更容易构建。
如果您对我的任何陈述有疑问,请回复评论。我将尽力回答您的问题。

谢谢你的回答。这很有帮助。我正在努力理解这个概念。如果我理解正确,我可以预先构建并在我的报告中包含链接,当用户点击时,报告将使用SSRS界面中已选择的参数重新呈现,并附加&rs:Format=PDF,以便报告将弹出或下载为PDF。或者,创建两个版本的相同报告,具有相同的参数,但一个只是呈现另一个所选参数的“门户”? - Baodad
1
@Baodad 是的,你似乎理解了我的观点。在使用任何rs:或rc: URL参数时,您必须使用ReportViewer.aspx页面,而不是Report.aspx。此外,如果加载时间是一个问题,而且您不想让所有内容都加载两次,您可以创建一个报表,基本上只加载参数选项并链接到其他报表。如果正确执行,这些报表几乎可以立即加载,从而避免了重复加载相同的报表。 - Christopher Brown

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