以下代码位于方法内部,它使用报表查看器呈现报表:
objReportViewer.LocalReport.ReportPath = "TestReport.rdlc";
objReportViewer.LocalReport.DataSources.Clear();
objReportViewer.LocalReport.DisplayName = "TestReport_" + DateTime.Now.ToString("yyyyMMdd");
object objReportDataSource = TestReportDataSource(Id);
objReportViewer.LocalReport.DataSources.Add(new ReportDataSource("TestReportDataSource", objReportDataSource));
objReportViewer.ZoomMode = ZoomMode.PageWidth;
ReportParameter[] arrReportParameters = new ReportParameter[3];
// First Name
arrReportParameters[0] = new ReportParameter("FirstName",person.FirstName);
// LastName
arrReportParameters[1] = new ReportParameter("LastName", person.LastName);
//DOB
arrReportParameters[2] = new ReportParameter("Age",person.DOB);
objReportViewer.ShowParameterPrompts = false;
objReportViewer.DocumentMapCollapsed = true;
objReportViewer.ShowDocumentMapButton = false;
objReportViewer.LocalReport.SetParameters(arrReportParameters);
objReportViewer.LocalReport.ExecuteReportInSandboxAppDomain();
objReportViewer.LocalReport.Refresh();
到目前为止,在尝试生成报告时没有任何问题,如果有大量信息,那么报告将有两个或更多页面。如果我想打印或导出到.pdf,我可以从渲染的报告中这样做。 我的问题是两个:
1-如何使报表查看器以编程方式导出为.pdf。
2-如何使报表查看器仅显示1页而忽略其余数据,或者如果以编程方式将其导出到.pdf,如何只导出第一页而忽略其余页面。
例如,如果报告通常会呈现2个页面,我希望它只呈现第一个页面。
是否可以使用报告查看器完成?
谢谢。
答案 0 :(得分:1)
我不确定如何将pdf限制为一页。但是这是你如何导出到pdf:
Microsoft.Reporting.WebForms.LocalReport oLocalReport = objReportViewer.LocalReport;
byte[] renderedBytes = null;
string reportType = "PDF";
string mimeType = "application/pdf";
string encoding = null;
Microsoft.Reporting.WebForms.Warning[] warnings = null;
string[] streams = null;
string deviceInfo = "<DeviceInfo><OutputFormat>PDF</OutputFormat><PageWidth>8.5in</PageWidth><PageHeight>11in</PageHeight></DeviceInfo>";
//Render the report
renderedBytes = oLocalReport.Render(reportType, deviceInfo, mimeType, encoding, "PDF", streams, warnings);
System.Web.HttpContext.Current.Response.Clear();
System.Web.HttpContext.Current.Response.ContentType = mimeType;
System.Web.HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=" + _reportName + ".PDF");
System.Web.HttpContext.Current.Response.BinaryWrite(renderedBytes);
System.Web.HttpContext.Current.Response.End();