.NET水晶报表简单使用
来源:互联网 发布:数据分析师证书被取消 编辑:程序博客网 时间:2024/05/23 02:04
原文章来源:http://hi.baidu.com/xtb218/blog/item/97b2b7f8b8bf191dd8f9fd98.html
.NET水晶报表首先要从概念入手,水晶报表(Crystal Report)是业内最专业、功能最强的报表系统,它除了强大的报表功能外,最大的优势是实现了与绝大多数流行开发工具的集成和接口。
1、.NET水晶报表的好处
1)利用水晶报表可以进行数值求平均值,画图等
2)利用水晶报表可以把文件导出不同的格式(word等)
2、.NET水晶报表的两种格式
1)pull模式,不利用DataSet,直接从数据库中取出数据
2) push模式,使用DataSet,利用它进行数据的加载和处理等
3. .NET水晶报表使用的库
1)水晶报表的引擎(CREnging.dll),作用:合并数据,装换格式
2)水晶报表设计器(CRDesigner.dll),作用:设计标题,插入数据等
3)水晶报表查看控件(CRWebFormViewer.DLL)
4)需要引入的命名空间
using CrystalDecisions.CrystalReports.Engine; using CrystalDecisions.Shared;
4、Pull模式下使用水晶报表
1)创建rpt文件
2)拖放CrystalReportViewer
3)绑定
5、读取.NET水晶报表文件
private void ReadCRV(cryatalReportViewer crv) { openFileDialog dlg=new OpenFileDialog(); dlg.Title="打开水晶报表文件"; dlg.Filter="水晶报表文件(*.rpt)|*.rpt|所有文件|*.*"; if(dlg.showDialog()==DialogResult.OK) { crv.ReportSource=dlg.FileName; } }
6. B/S下读取报表的文件
private void ReadCRV(cryatalReportViewer crv,File file) { string strName=file.PostedFile.FileName; if(strName.Trim()!="") { crv.ReportSource=strName Session["fileName"]=strName; } }
在B/S中要防止数据源的丢失
priavte void Page_Load(object sender,System.EventArgs e) { if(Session["fileName"]!=null) { crv.ReportSource=Session["fileName"].ToString(); } }
7. 假如直接从数据库中读取数据
采用PULL模式可能出现错误(登录的用户名和密码不对)
private void ReadCRV(CrystalReportViewer crv,CrystalReport cr) { ReportDocument reportDoc=new ReportDocument(); reportDoc.Load(Server.MapPath(cr));//要加载的rpt文件的名字 //解决登录的问题 TableLogOnInfo logonInfo = new TableLogOnInfo(); foreach(Table tb in ReportDoc.Database.Tables) { logonInfo=tb.LogOnInfo; logonInfo.ConnectionInfo.ServerName="(loacl)"; logonInfo.ConnectionInfo.DatabaseName="Pubs"; logonInfo.ConnectionInfo.UserId="sa"; logonInfo.ConnectionInfo.Password=""; tb.ApplyLogOnInfo(logonInfo); } crv.ReportSource=reportDoc; }
8. 采用Push模式,直接在数据源读取
private void BindReport(CrystalReportViewer crv) { string strProvider="Server=(local);DataBase=pubs;uid=sa;pwd="; CrystalReport cr=new CrystalReport(); DataSet ds=new DataSet(); SqlConnection conn=new SqlConnection(strProvider); conn.open(); string strSql="select * from jobs"; SqlDataAdapter dap=new SqlDataAdapter(strSql,conn); adp.Fill(ds,"jobs"); cr.SetDataSource(ds); crcrv.ReportSource=cr; }
9. 导出水晶报表的文件
private void ExportCrv(CrystalReport cr) { DiskFileDestionOptions dOpt=new DiskFileDestionOptions(); cr.ExportOptions.ExportDestinationType=ExportDestinationType.DiskFile(); cr.ExportOptions.ExportFormatType= ExportFormatType.PortableDocFormat; dOpt.DiskFileName="C:\output.pdf"; cr.ExportOptions.DestinationOptions=dOpt; cr.Export(); } private void ExportCrv(CrystalReport cr,string strType,string strPath) { DiskFileDestionOptions dOpt=new DiskFileDestionOptions(); cr.ExportOptions.ExportDestinationType=ExportDestinationType.DiskFile(); switch(strType) { case "RTF": cr.ExportOptions.ExportFormatType=ExportFormatType.RichText; dOpt.DiskFileName=strPath; break; case "PDF": cr.ExportOptions.ExportFormatType=ExportFormatType.PortableDocFormat; dOpt.DiskFileName=strPath; break; case "DOC": cr.ExportOptions.ExportFormatType=ExportFormatType.WordForWindows; dOpt.DiskFileName=strPath; break; case "XLS": cr.ExportOptions.ExportFormatType=ExportFormatType.Excel; dOpt.DiskFileName=strPath; break; default; break; } cr.ExportOptions.DestinationOptions=dOpt; cr.Export(); }
10 B/S下水晶报表的打印
priavte void PrintCRV(CrystalReport cr) { string strPrinterName=@"printName"; PageMargins margins=cr.PrintOptions.PageMargins; margins.bottomMargin = 250; margins.leftMargin = 350; margins.rightMargin = 350; margins.topMargin = 450; cr.PrintOptions.ApplyPageMargins(margins); cr.PrintOptions.printerName=strPrinterName; cr.PrintToPrinter(1,false,0,0)//参数设置为0,表示打印所用页 }
- .NET水晶报表简单使用
- .Net水晶报表使用
- .NET 使用 水晶报表
- .net水晶报表的使用
- Asp.NET使用水晶报表
- ASP.NET 水晶报表使用
- .net中水晶报表使用
- 水晶报表的简单使用
- 水晶报表的简单使用
- 水晶报表.NET 2003 下使用水晶报表(Crystal Report)
- .NET环境下水晶报表使用总结
- 补: ASP.Net中使用水晶报表!
- ASP.NET中水晶报表的使用
- .NET环境下水晶报表使用总结
- Asp.Net中使用水晶报表
- ASP.NET中水晶报表的使用
- ASP.NET中水晶报表的使用
- .NET环境下水晶报表使用总
- 树状图 TreeView控件--访问控件的所有节点
- Java常用文件目录处理代码集
- flex日期比较
- 树状图 TreeView控件--添加/删除节点(亲自实践)
- Androidpn的框架浅析
- .NET水晶报表简单使用
- 思科的云战略:强制与贪婪
- XML Schema使用参考手册
- 省略符形参
- 浏览器扩展反编译工具
- Windows Socket五种I/O模型——代码全攻略
- The selected wizard could not be started.Plug-in org.tigris.subversion.subclipse.ui was unable to l
- C/C++位域(Bit-fields)之我见(不错)
- 如何使用Oracle FND_LOAD工具在不同Instance间同步数据(Example)