参考了网上的一些文章:
TableLogOnInfo logOnInfo = new TableLogOnInfo ();
ReportDocument oRpt = new ReportDocument();
string RptDir="F://aspnet//crystaltopdf//crystalreport1.rpt"; //crystalreport1.rpt文件所在的绝对路径
oRpt.Load(RptDir);
logOnInfo.ConnectionInfo.ServerName = "localhost";
logOnInfo.ConnectionInfo.DatabaseName = "northwind";
logOnInfo.ConnectionInfo.UserID = "sa";
logOnInfo.ConnectionInfo.Password = "xxxxxx";
oRpt.Database.Tables [0].ApplyLogOnInfo(logOnInfo);
//建立.rpt文件与CryStalReportviewer文件之间的连接
CrystalReportViewer1.ReportSource=oRpt;
ExportOptions crExportOptions=new ExportOptions();
DiskFileDestinationOptions crDiskFileDestinationOptions=new DiskFileDestinationOptions();
crDiskFileDestinationOptions.DiskFileName="f://aspnet//crystaltopdf//crystalreport1.pdf";
crExportOptions=oRpt.ExportOptions ;
crExportOptions.DestinationOptions=crDiskFileDestinationOptions;
crExportOptions.ExportDestinationType =ExportDestinationType.DiskFile;
crExportOptions.ExportFormatType =ExportFormatType.PortableDocFormat ;
oRpt.Export();
oRpt.Close();
Response.ClearContent();
Response.ClearHeaders ();
Response.ContentType ="application/pdf";
Response.WriteFile("f://aspnet//crystaltopdf//crystalreport1.pdf");
Response.Flush();
Response.Close();
其中,我试过,一定要用代码里加登陆等信息,不加的话说登陆错误,真奇怪,明明在建报表时加了,为什么要加在代码里呢?程序中生成PDF的方法和生成EXCEL的方法都差不多的。