如何以编程方式运行并导出到ReportViewer的HTML

时间:2015-06-12 15:16:08

标签: c# asp.net visual-studio-2012 reportviewer

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

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

第2部分:我在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);

如果问的不多,请在答案中添加一些解释。我还不熟悉报道,我想了解它为什么不起作用。

1 个答案:

答案 0 :(得分:0)

我设法解决了这个问题。我的代码是正确的,即使我传递了所需的参数,报告本身并没有真正使用参数。