如何在没有服务器或者UI的情况下从嵌入式报表定义生成PDF?
时间:2020-03-06 14:46:15 来源:igfitidea点击:
一个独立的可执行文件是否有可能在不显示ReportViewer控件的情况下生成报告并将其输出为PDF(或者从报告查看器获得的其他导出选项之一)?
报告定义应嵌入在可执行文件中,并且不应使用Reporting Services Web服务。
解决方案
我们不必显示控件本身。
ReportViewer rv = new ReportViewer(); rv.LocalReport.ReportPath = "templatepath"; // or use file from resource with rv.LocalReport.ReportEmbeddedResource // add parameters, datasource, etc. Warning[] warnings; string[] streamids; string mimeType; string encoding; string filenameExtension; byte[] bytes; bytes = rv.LocalReport.Render("PDF", null, out mimeType, out encoding, out filenameExtension, out streamids, out warnings); // save byte[] to file with FileStream or something else
但是,它只能呈现PDF和XLS(因为ReportViewer控件无法像Reportig Service一样导出到Word和其他控件)。
我忘了提到上面的代码是C#,使用.NET Framework和ReportViewer控件。查看GotReportViewer以获得快速入门。
实际上,我们根本不需要ReportViewer,可以直接实例化并使用LocalReport:
LocalReport report = new LocalReport(); report.ReportPath = "templatepath"; // or use file from resource with report.ReportEmbeddedResource // add parameters, datasource, etc. Warning[] warnings; string[] streamids; string mimeType; string encoding; string filenameExtension; byte[] bytes; bytes =report.Render("PDF", null, out mimeType, out encoding, out filenameExtension, out streamids, out warnings); // save byte[] to file with FileStream or something else
我们可以将带参数的.rdlc报告直接传递给pdf吗?我有两个下拉列表,可用来提取报告。自动导出为pdf时,我无法使用这些参数。这是我得到的错误:Microsoft.ReportingServices.ReportProcessing.ReportProcessingException:未指定运行报告所需的一个或者多个参数。
当我使用reportviewer时,下拉列表有效,但我想跳过此步骤。如果没有任何参数,我也可以直接将数据转为pdf。我的下拉列表称为ddlyear和ddlmonth。