您的位置:首页 > 其它

水晶报表的简单使用

2007-04-30 10:42 344 查看
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#代码:


// 在此处放置用户代码以初始化页面


string strProvider = "";


SqlConnection MyConn = new SqlConnection(strProvider);


MyConn.Open();


string strSel = "Select * from Employees";


SqlDataAdapter MyAdapter = new SqlDataAdapter(strSel, MyConn);


DataSet1 ds = new DataSet1();


MyAdapter.Fill(ds, "Employees");




ReportDocument ReportDoc = new ReportDocument();




ReportDoc.FileName = @"绝对路径";//注意:这里一定要用绝对路径




// 加载出错一般原因可能是:


//1,报表和数据源的结构不一致,字段多少、类型等不对应;


//2,报表路径问题,使用的是绝对路径访问;




ReportDoc.SetDataSource(ds);


this.CrystalReportViewer1.ReportSource = ReportDoc;

三 用程序改变报表中text的文本
代码如下:
C#代码:
1

CrystalDecisions.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种格式的报表导出功能
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: