一.解决问题
在SQL Reporting Services报表服务器中,我们可以通过点击链接附加参数的形式来打开报表,现在我们需要程序能够自动的把报表存储为pdf格式,存在一个目录下面
二.解决思路
1.首先能自动保存,就需要有脚本不停的跑,我选择SQL自带的代理功能
2.然后通过代理这个功能来调用我们的webservic服务,通过这样的形式来解决这个问题
3.找到SQL Reporting Services的引用文件,在引用中选择nuget程序包找到Microsoft.Reporting.WebForms最新版的引用,添加引用
4.然后复制代码
ReportViewer reportview = new ReportViewer();//web界面显示RS报表控件
reportview.ProcessingMode = ProcessingMode.Remote;//控件处理模式,Remote远程,.Local本地
reportview.ServerReport.ReportServerUrl = new Uri("http://tieslimsweb/ReportServer");//报表服务器这里注意如果是应用和数据库服务器分开部署得话,你需要把这个地址换成id地址192.168.1.20 这种
reportview.ServerReport.ReportPath = "/Report/通用附件报告";//报表地址,注意不加.rdl后缀
ReportParameter[] reportParam = new ReportParameter[1];//报表传参,2代表两个参数
reportParam[0] = new ReportParameter("p_SC", "350", true);
reportview.ServerReport.SetParameters(reportParam);//这里通了说明就连接到了报表服务器
reportview.ShowParameterPrompts = false;//是否显示参数提示值
Warning[] warnings;
string[] streamids;
string mimeType;
string encoding;
string extension;
//string deviceInfo;
byte[] bytes = reportview.ServerReport.Render(
"PDF", null, out mimeType, out encoding, out extension,
out streamids, out warnings);//读取报表流
FileStream fs = new FileStream(ReportPath+ "\\"+SC+".pdf", FileMode.Create);
fs.Write(bytes, 0, bytes.Length);//存储,filePath为绝对路径地址
fs.Close();
reportview.ShowToolBar = false;
reportview.ShowReportBody = false;
5.代码注意事项都在上面,基本步骤为,
一.能够连接上报表服务器
二.能够找到改到处的报表
三.导出至文件夹
6.ReportServerUrl 这个在报表软件中得到,点击下图的url得到
7.ReportPath的地址为报表服务器的相对路径的地址
出现问题一.
应用程序池请配置
出现问题2.
部署后路径匹配不上,有可能实际服务器是分布式得,请把路径换成地址得方式就可以访问