这个问题有两个部分。第 1 部分:如何以编程方式运行报表查看器和第 2 部分:如何以编程方式将报表查看器导出为 html。
第 1 部分:.rdl 托管在远程服务器上,我需要运行此报告,就像用户单击“查看结果”一样,但是以编程方式。我给了它正确的报告 url、路径和参数,但我似乎遗漏了一些东西,因为当我导出它时,结果为 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);
如果问题不多,请在您的回答中添加一些解释。我对报告还是个新手,我想了解为什么它不起作用。
最佳答案
我设法解决了它。我的代码是正确的,即使我传递了必需的参数,但报告本身并没有真正使用该参数。
关于c# - 如何以编程方式运行 ReportViewer 并将其导出为 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30806580/