如何使用Crystal Report部署WPF应用程序

时间:2014-08-28 07:05:28

标签: c# wpf crystal-reports

我的项目中有两个水晶报告。

我在My项目中有SaleBillReport.rpt文件。 使用报告对象方法加载,其代码如下所示。

第一份报告显示为 -

案例1:

 SaleBillReport rptObj = new SaleBillReport();//My Rpt file name
 rptObj.SetDataSource(_ReportDataSet);

 _reportViewer.ReportSource = rptObj;

第二份报告显示为 -

案例2:

ReportDocument objReportDoc = new ReportDocument();
objReportDoc.Load(@"D:\\" + "MyReport.rpt");

ReportViewerNew.ReportSource = objReportDoc;

我的问题是,在部署此项目时,我不需要将任何.rpt文件放在任何位置。 它是在我的应用程序中内置的。

但是我必须将我的第二个.rpt文件放到任何显示路径上。(我不想放在任何地方) 那么我如何在部署期间在我的项目中构建案例2 .rpt文件。

提前致谢

2 个答案:

答案 0 :(得分:0)

使用Reflection查找应用程序的安装位置

System.Reflection.Assembly.GetExecutingAssembly

Method explantion

并询问该程序集的文件夹,并将您的报告文件名添加到该路径...

答案 1 :(得分:0)

一种解决方案可以使用反射,但这有点棘手。

第二个和更简单的一个将使用Environment.CurrentDirectory

为此,请修改您的Case 2代码 -

ReportDocument objReportDoc = new ReportDocument();
string reportPath = System.IO.Path.Combine(Environment.CurrentDirectory, "MyReport.rpt");
objReportDoc.Load(reportPath);

ReportViewerNew.ReportSource = objReportDoc;

并且您的报告在当前目录位置始终是永久性的,只需转到MyReport.rpt文件的属性,然后选择始终复制复制如果更新