我在报表服务器实例上托管了一组RDL reports
。某些报告在ReportViewer上呈现的内容超过100,000
条。因此,在Viewer上渲染它需要很长时间。因此,我们决定根据报告的用户输入参数以及导出文件格式直接从服务器导出内容。
主要的是,我不希望用户等到导出文件可供下载。相反,用户可以提交操作并可以继续做其他工作。在后台,程序必须将文件导出到某个物理位置。当下载可用时,将通知用户有关导出文件的一些通知。
我在Link中找到了方法。我需要知道实现上述功能的方法是什么,以及如何传递报告的输入参数。 Pl建议我。
Note: I was using XML as datasource for the rdl reports.
EDIT
我找到了一些有用的东西并按照下面的编码进行了编码,
string path = ServerURL +"?" + _reportFolder + "ReportName&rs:Command=Render&rs:Format=PDF";
WebRequest req = WebRequest.Create(path);
string reportParametersQT = String.Empty;
req.Credentials = CredentialCache.DefaultNetworkCredentials;
WebResponse response = req.GetResponse();
Stream stream = response.GetResponseStream();
//screen.Response.Clear();
string enCodeFileName = HttpUtility.UrlEncode("fileName.pdf", System.Text.Encoding.UTF8);
// The word attachment in Addheader is used to directly show the save dialog box in browser
Response.AddHeader("content-disposition", "attachment; filename=" + enCodeFileName);
Response.BufferOutput = false; // to prevent buffering
Response.ContentType = response.ContentType;
byte[] buffer = new byte[1024];
int bytesRead = 0;
while ((bytesRead = stream.Read(buffer, 0, buffer.Length)) > 0)
{
Response.OutputStream.Write(buffer, 0, bytesRead);
}
Response.End();
我可以下载导出的文件。但需要将文件保存在物理位置而不是下载。我不知道该怎么做。
答案 0 :(得分:1)
这两个都很容易做到。您基本上只是传递您正在调用的URL中的参数,例如,您为URL添加&LearnerList=12345
的名为“LearnerList”的参数。对于导出,请为Format=PDF
(或任何您想要的文件)添加其他参数,以使报告以PDF格式导出,而不是在报告查看器中生成。
以下是一个示例网址:
https://reporting.MySite.net/ReportServer/Pages/ReportViewer.aspx?/Users+Folders/User/My+Reports/Learner+Details&rs:Format=PDF&LearnerList=202307
阅读这两页,你应该是金色的: