.net中水晶报表的使用

来源:互联网 发布:淘宝店铺招牌源代码 编辑:程序博客网 时间:2024/05/16 09:26

1使用Pull模式
   1.首先创建rpt文件,并使用水晶报表设计接口设置一些必须的数据连接。     
    2.拖放一个   CrystalReportViewer控件至aspx页面,设置它的属性指定我们上一步创建的.rpt文件。     
    3.   在代码中调用DataBind方法。   
    创建   .rpt   文件:   
    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文件路径。       
    17)   此时你能够从Crystal   Report   Viewer   控件中看到使用一些虚拟数据组成的报表文件的预览。   
    注意:在上面的例子中,CrystalReportViewer可以在设计时直接调用真实的数据,因为此时数据已经保存。在这种情况下,设计时当没有保存数据时,他是不能显示数据的。取而代这的是显示一些虚拟的数据,只有在执行时才会选取真实的数据。   
    Code   Behind   程序设计   
    18)   在Page_Load方法中调用DataBind方法。   
    执行你的程序     
    19)   创建并运行你的程序!

 使用PUSH模式     
    我们采用下面的几步使用Push模式执行水晶报表:   
    1.   设计一个DataSet   
    2.   创建一个.rpt文件同时将其指定给上一步建立的DataSet。   
    3.   在aspx页面中拖放一个CrystalReportViewer控件同时将其与前面的rpt文件建立联系。   
    4.   在代码中访问数据库并把数据存入DataSet   
    5.   调用DataBind方法。   
    设计一个DataSet   
    1)   右击“解决方案浏览器”,选择“添加”--“添加新项”-->“数据集”   
    2)   从“服务器资源管理器”中的“SQL   Server”中拖放“Stores”表(位于PUBS数据库中)。   
    
    
    3)   此时在数据集中就会有一个Stores表的结构图。   
    
    -   .xsd文件中仅仅包含一个结构图,但是不会有任何数据在里面。   
    创建   .rpt   文件   :   
    4)   使用上面的介绍过的方法创建此文件,唯一的不同就是使用数据集来代替前面的直接连接数据。   
    5)建立.rpt文件之后,右击“详细资料”-->"添加/删除数据库“   
    6)   在”数据库专家“窗口中,展开”项目数据“(代替以前的OleDb),展开“ADO.Net数据集”--"DataSet1“,选择”Stores“表。   
    7)   将”Stores"表添加到“选定的表”中,点击“OK”   
    
    8)   使用PULL模式下的方法,建立一个WebForm   
    建立一个Crystal   Report   Viewer   控件   
    9)   建立一个Crystal   Report   Viewer   控件,并设定其属性,此处与PULL模式下是一致的。   
    Code   Behind   代码:   
    10)   在Page_Load方法中使用下面的子函数:

 C#代码:

 1  private   void   BindReport()   
 2  {   
 3    string   strProvider   =   "Server=(local);DataBase=pubs;UID=sa;PWD=";   
 4    CrystalReport1   oCR   =   new   CrystalReport1();   
 5    Dataset1   ds   =   new   Dataset1();   
 6    SqlConnection   MyConn   =   new   SqlConnection(strProvider);   
 7    MyConn.Open();   
 8    string   strSel   =   "Select   *   from   Stores";   
 9    SqlDataAdapter   MyAdapter   =   new   SqlDataAdapter(strSel,MyConn);   
10    MyAdapter.Fill(ds,"stores");   
11    oCR.SetDataSource(ds);   
12    this.CrystalReportViewer1.ReportSource   =   oCR;   
13  }  
三 用程序改变报表中text的文本
代码如下:
C#代码:1CrystalDecisions.CrystalReports.Engine.TextObject GetTextObject;
2             GetTextObject = oCR.ReportDefinition.ReportObjects["报表中的文本框对象名称"] as CrystalDecisions.CrystalReports.Engine.TextObject;//oCR是自定义报表类的对象。
3             GetTextObject.Text = "需要改变的内容";
四 导出(摘自http://www.cnblogs.com/strinkbug/archive/2006/11/01/546264.html?Pending=true#Post
 其实如果是在windows 的窗体中,水晶报表的Crystalreportviewer本身提供了导出功能,所以可以不需要编写任何代码。
      但是在asp.net中要实现水晶报表的导出功能则稍微有点不同了,需要实现少量的代码,下面是一个代码模版:
        public void Export(string FileName, string Ext)
        {
            ReportDocument reportDocument = GetReportDocument();
            ExportOptions exportOptions = new ExportOptions();
            DiskFileDestinationOptions diskOptions = ExportOptions.CreateDiskFileDestinationOptions();
            exportOptions.ExportFormatType = GetExportFormatType(Ext);
            exportOptions.ExportDestinationType = ExportDestinationType.DiskFile;            
            diskOptions.DiskFileName = FileName+"."+Ext;
            exportOptions.ExportDestinationOptions = diskOptions;
            reportDocument.Export(exportOptions);
        }

其中GetExportFormatType()的实现如下:

    private ExportFormatType GetExportFormatType(string ext)
        {
            switch (ext)
            {
                case "pdf":
                     return ExportFormatType.PortableDocFormat;
                 case "rtf":
                     return ExportFormatType.RichText;
                 case "doc":
                     return ExportFormatType.WordForWindows;
                 case "xls":
                     return ExportFormatType.Excel;
                 case "html":
                     return ExportFormatType.HTML32;                 
                default:
                    return ExportFormatType.NoFormat;
            }
        }

而GetReportDocument()则是一个返回用户要导出的报表的ReportDocument 对象的函数,用户自己随意去实现。
另外还要注意,FileName的格式必须是:"c:\\crystalreport"  这样的形式。

套用这个代码模版,就可以实现5种格式的报表导出功能;

原创粉丝点击