Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何以编程方式运行ReportViewer并将其导出到HTML_C#_Asp.net_Visual Studio 2012_Reportviewer - Fatal编程技术网

C# 如何以编程方式运行ReportViewer并将其导出到HTML

C# 如何以编程方式运行ReportViewer并将其导出到HTML,c#,asp.net,visual-studio-2012,reportviewer,C#,Asp.net,Visual Studio 2012,Reportviewer,这个问题有两部分。第1部分:如何以编程方式运行reportviewer,第2部分:如何以编程方式将reportviewer导出为html 第1部分:.rdl托管在远程服务器上,我需要像用户单击“查看结果”一样以编程方式运行此报告。我给了它正确的报告url、路径和参数,但我似乎遗漏了一些东西,因为当我导出它时,结果是0,这意味着它没有运行。我很确定我错过了什么,但我不知道是什么 第二部分:我在VS12上运行。我曾读到,在VS10中无法导出为HTML,但在VS12中可以,但结果完全错误。此报表有几个

这个问题有两部分。第1部分:如何以编程方式运行reportviewer,第2部分:如何以编程方式将reportviewer导出为html

第1部分:.rdl托管在远程服务器上,我需要像用户单击“查看结果”一样以编程方式运行此报告。我给了它正确的报告url、路径和参数,但我似乎遗漏了一些东西,因为当我导出它时,结果是0,这意味着它没有运行。我很确定我错过了什么,但我不知道是什么

第二部分:我在VS12上运行。我曾读到,在VS10中无法导出为HTML,但在VS12中可以,但结果完全错误。此报表有几个带有彩色填充单元格的表。即使数据以表格格式对齐,单元格也不着色。我得到了一个pdf格式的工作,但数据是空的,因为第1部分。我希望它是html格式的,因为我计划将此导出放在电子邮件正文中

到目前为止,我得到的是:

report.ServerReport.ReportPath = reportPath;

//Assign parameters
var parameters = new List<ReportParameter>();

            parameters.Add(new ReportParameter("Param1", param1));

            parameters.Add(new ReportParameter("Param2", param2));

            //Execute report
            report.ServerReport.SetParameters(parameters.ToArray());

            string mimeType,
                encoding,
                fileNameExtension;

            Warning[] warnings;

            string[] streamIds;

            //Export report
            byte[] exportBytes = report.ServerReport.Render("HTML4.0", null, out mimeType, out encoding,
                out fileNameExtension, out streamIds, out warnings);

             //For pdf format
             //HttpContext.Current.Response.Buffer = true;
             //HttpContext.Current.Response.Clear();
             //HttpContext.Current.Response.ContentType = mimeType;
             //HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=ExportedReport." + fileNameExtension);
             //HttpContext.Current.Response.BinaryWrite(exportBytes);
             //HttpContext.Current.Response.Flush();
             //HttpContext.Current.Response.End();

            var exportHtml = System.Text.Encoding.UTF8.GetString(exportBytes);
report.ServerReport.ReportPath=ReportPath;
//指定参数
var参数=新列表();
添加(新的ReportParameter(“Param1”,Param1));
添加(新的ReportParameter(“Param2”,Param2));
//执行报告
report.ServerReport.SetParameters(parameters.ToArray());
字符串mimeType,
编码,
文件名扩展;
警告[]警告;
字符串[]流线;
//出口报告
byte[]exportBytes=report.ServerReport.Render(“HTML4.0”,null,out-mimeType,out-encoding,
输出文件名扩展名、输出流ID、输出警告);
//pdf格式
//HttpContext.Current.Response.Buffer=true;
//HttpContext.Current.Response.Clear();
//HttpContext.Current.Response.ContentType=mimeType;
//HttpContext.Current.Response.AddHeader(“内容处置”,“附件;文件名=ExportedReport.”+文件名扩展名);
//HttpContext.Current.Response.BinaryWrite(exportBytes);
//HttpContext.Current.Response.Flush();
//HttpContext.Current.Response.End();
var exportHtml=System.Text.Encoding.UTF8.GetString(exportBytes);

如果问题不多,请在回答中加上一些解释。我对报道还是新手,我想了解为什么它不起作用

我设法解决了它。我的代码是正确的,尽管我传递了所需的参数,但报告本身并没有真正使用该参数

你的SSRS版本是2012年还是2008年?相关吗?@MichaelRudnerEvanchik如果这个问题有点让人困惑,我很抱歉。我不需要显示它,我只想运行它并导出结果。这可能吗?