当装了reporting service 2005后,给自己的项目添加web引用,如下图
在本地计算机服务上会发现ReportExecution2005,这里面有根据报表服务器上报表的路径来生成报表的函数Render,具体可以查看功能文件目录,在添加了该web service后会多出来一个文件 Reference.cs,这是一个ReportExecutionService类定义文件,以后我们提取该文件,不需要再去引用ReportExecution2005这个web service就可以用代码生成报表并传输到客户端.
- ReportExecutionService rs = new ReportExecutionService();
- rs.Credentials = System.Net.CredentialCache.DefaultCredentials;
- rs.Url = "http://myserver/reportserver/ReportExecution2005.asmx";
- // Render arguments
- byte[] result = null;
- string reportPath = "/AdventureWorks Sample Reports/Employee Sales Summary";
- string format = "MHTML";
- string historyID = null;
- string devInfo = @"<DeviceInfo><Toolbar>False</Toolbar></DeviceInfo>";
- // Prepare report parameter.
- ParameterValue[] parameters = new ParameterValue[3];
- parameters[0] = new ParameterValue();
- parameters[0].Name = "EmpID";
- parameters[0].Value = "288";
- parameters[1] = new ParameterValue();
- parameters[1].Name = "ReportMonth";
- parameters[1].Value = "6"; // June
- parameters[2] = new ParameterValue();
- parameters[2].Name = "ReportYear";
- parameters[2].Value = "2004";
- DataSourceCredentials[] credentials = null;
- string showHideToggle = null;
- string encoding;
- string mimeType;
- string extension;
- Warning[] warnings = null;
- ParameterValue[] reportHistoryParameters = null;
- string[] streamIDs = null;
- ExecutionInfo execInfo = new ExecutionInfo();
- ExecutionHeader execHeader = new ExecutionHeader();
- rs.ExecutionHeaderValue = execHeader;
- execInfo = rs.LoadReport(reportPath, historyID);
- rs.SetExecutionParameters(parameters, "en-us");
- String SessionId = rs.ExecutionHeaderValue.ExecutionID;
- Console.WriteLine("SessionID: {0}", rs.ExecutionHeaderValue.ExecutionID);
- try
- {
- result = rs.Render(format, devInfo, out extension, out encoding, out mimeType, out warnings, out streamIDs);
- execInfo = rs.GetExecutionInfo();
- Console.WriteLine("Execution date and time: {0}", execInfo.ExecutionDateTime);
- }
- catch (SoapException e)
- {
- Console.WriteLine(e.Detail.OuterXml);
- }
- // Write the contents of the report to an MHTML file.
- try
- {
- FileStream stream = File.Create("report.mht", result.Length);
- Console.WriteLine("File created.");
- stream.Write(result, 0, result.Length);
- Console.WriteLine("Result written to the file.");
- stream.Close();
- }
- catch (Exception e)
- {
- Console.WriteLine(e.Message);
- }