水晶报表生成

来源:互联网 发布:查看交换机端口ip地址 编辑:程序博客网 时间:2024/04/29 02:41

一.我们采用下面的几步使用Push模式执行水晶报表:
1. 设计一个DataSet
2. 创建一个.rpt文件同时将其指定给上一步建立的DataSet。
3. 在aspx页面中拖放一个CrystalReportViewer控件同时将其与前面的rpt文件建立联系。
4. 在代码中访问数据库并把数据存入DataSet
5. 调用DataBind方法。

 oRpt = new ReportDocument();
        string RptDir =Server.MapPath("MyReport.rpt");
        //Response.Write(RptDir);
        //string RptDir = "E://vs2005//ASPcrystal//MyReport.rpt"; //crystalreport1.rpt文件所在的绝对路径
        oRpt.Load(RptDir);

        SqlConnection con = new SqlConnection("server=.;database=northwind;uid=sa;pwd=;");
        con.Open();
        SqlDataAdapter da = new SqlDataAdapter("select * from customers", con);
        DataSet ds = new DataSet();
        da.Fill(ds, "customers");
        oRpt.SetDataSource(ds);           
        this.CrystalReportViewer1.ReportSource = oRpt;

  二.C#.Net的WinForm中使用水晶报表

using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;     
MyReport mydoc = new MyReport();   
mydoc.SetDataSource(ds.Tables["persontb"]);
crystalReportViewer1.ReportSource = mydoc;
TextObject tb = (TextObject)mydoc.ReportDefinition.ReportObjects["Text13"];
tb.Text = vievprint.content;

 

三.使用Pull模式
  我们将通过下面的这些步骤来通过Pull模式来执行水晶报表
  1.首先创建rpt文件,并使用水晶报表设计接口设置一些必须的数据连接。
  2.拖放一个 CrystalReportViewer控件至aspx页面,设置它的属性指定我们上一步创建的.rpt文件。
  3. 在代码中调用DataBind方法。
1) 在右击”解决方案游览器“,在弹出的菜单中选择”添加“--”添加新项“-->”Crystal Report”  
   2) 在”Crystal Report 库”中选择”作为空白报表“单选按钮,最后单击“确定“。  
  3)这里将弹出水晶报表设计器。  
   4) 右击报表中的”详细资料区”,选择“数据库”->“添加/删除数据库..."
  5) 在弹出的”数据库专家“中,扩展”OLE DB(ADO)“选项,此时会弹出另外一个”OLE DB(ADO)“窗口。
  6) 在 "OLE DB (ADO)" 弹出窗口中,选择 "Microsoft OLE DB Provider for SQL Server" 然后 "Next"
   7) 指定连接的信息
  服务器 : ASPCN (您的机器是什么名字就写什么)
  用户 ID: sa
  密码:
  数据库 : Pubs
  8) 单击”Next“,最后单击”Finish“按钮。
  9) 这时你就能在”数据库专家“窗口中看到我们选择的数据库。
  10) 扩展”Pubs“数据库,扩展”表“,选择”Stores“表并将其加到”选定的表“区中,单击”OK"按钮。
  11) 现在在”字段资源浏览器“中就会在左边”数据库字段“区中显示你选择的表,以及表中的字段。
  12) 拖放需要的字段进入报表的”详细资料“区。字段名将会自动出现在”页眉“区。如果你想修改头部文字,则可以右击”页眉“区中的文字,选择”编辑文本对象“选项并进行编辑。
  13) 保存,这样我们就有了一个水晶报表文件。
  创建 CrystalReportViewer 控件
  14) 回到前面的WebForm中,拖放一个Crystal Report Viewer控件到页面中去。
  15) 调出Crystal Report Viewer控件的属性窗口,选择“DataBindings"区点击[...]
  16) ”Crystal Report Viewer 数据绑定窗口”中,在右边的“可绑定属性”中选择”ReportSource“,并选择右下角的“自定义绑定表达式”中指定.rpt文件路径。 而在2005中直接新建ReportSourceID选择指定.rpt即可.
  17) 此时你能够从Crystal Report Viewer 控件中看到使用一些虚拟数据组成的报表文件的预览。
  注意:在上面的例子中,CrystalReportViewer可以在设计时直接调用真实的数据,因为此时数据已经保存。在这种情况下,设计时当没有保存数据时,他是不能显示数据的。取而代这的是显示一些虚拟的数据,只有在执行时才会选取真实的数据。

Code Behind 程序设计

  18) 在Page_Load方法中调用DataBind方法。

protected void Page_Load(object sender, EventArgs e)
    {
        
        
        TableLogOnInfo logOnInfo = new TableLogOnInfo();
        oRpt = new ReportDocument();
        string RptDir = "E://vs2005//ASPcrystal//MyReport.rpt"; //crystalreport1.rpt文件所在的绝对路径
        oRpt.Load(RptDir);

        logOnInfo.ConnectionInfo.ServerName = "Hpc"; 
       logOnInfo.ConnectionInfo.DatabaseName = "Northwind"; 
        logOnInfo.ConnectionInfo.UserID = "sa"; 
        logOnInfo.ConnectionInfo.Password =""; 
         oRpt.Database.Tables[0].ApplyLogOnInfo(logOnInfo);             
        this.CrystalReportViewer1.ReportSource = oRpt;
    }

  执行你的程序

 20.若要生成pdf文档 在以上代码中加入 
ExportOptions crExportOptions=new ExportOptions();
DiskFileDestinationOptions crDiskFileDestinationOptions=new DiskFileDestinationOptions();
crDiskFileDestinationOptions.DiskFileName="f://bbs//test//crystal//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://bbs//test//crystal//crystalreport1.pdf");
Response.Flush();
Response.Close();

原创粉丝点击