水晶报表CrystalReports很强大也很简单!

本文介绍使用CrystalReports实现复杂报表的方法,包括定义数据模型、设置数据源和子报表等关键步骤,并展示了煤矿行业储量管理报表的实际应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  水晶报表很强大啊!

  去年就搞过,但是由于当时知道的东西太少,对于数据绑定的机制理解的太浅,最后也没弄出个所以然。最近看到别人做的成果之后才坚定这个信念,CrystalReports可以实现很复杂的报表!煤矿行业的报表很复杂不是吗,用CrystalReports来解决吧!这里练习了一下CrystalReports的使用。

  看看煤矿储量管理的一张报表,啊,真的很复杂啊!

图1

  仔细分析,其中有一部分(红色框表示)是可以作为一张子表显示的。模拟这个子表,首先定义一个类Res,很简单,就几个属性字段。

View Code
 1 namespace 水晶报表练习
2 {
3 class Res
4 {
5 double x;
6
7 public double X
8 {
9 get { return x; }
10 set { x = value; }
11 }
12 double y;
13
14 public double Y
15 {
16 get { return y; }
17 set { y = value; }
18 }
19 double x1;
20
21 public double X1
22 {
23 get { return x1; }
24 set { x1 = value; }
25 }
26 double y1;
27
28 public double Y1
29 {
30 get { return y1; }
31 set { y1 = value; }
32 }
33 double x2;
34
35 public double X2
36 {
37 get { return x2; }
38 set { x2 = value; }
39 }
40 double y2;
41
42 public double Y2
43 {
44 get { return y2; }
45 set { y2 = value; }
46 }
47 }

From窗体From的代码如下:

View Code
 1 using System;
2 using System.Collections.Generic;
3 using System.ComponentModel;
4 using System.Data;
5 using System.Drawing;
6 using System.Linq;
7 using System.Text;
8 using System.Windows.Forms;
9 using System.Collections;
10 using CrystalDecisions.CrystalReports.Engine;
11
12 namespace 水晶报表练习
13 {
14 public partial class Form1 : Form
15 {
16 public Form1()
17 {
18 InitializeComponent();
19 }
20 private ArrayList stockValues;
21 private ReportDocument stockObjectsReport;
22 private void Form1_Load(object sender, EventArgs e)
23 {
24 stockValues=new ArrayList();
25 //string reportPath =Application.StartupPath+"\\CrystalReport1.rpt";
26 //string reportPath = @"..\..\CrystalReport2.rpt";
27
28 stockObjectsReport = new ReportDocument();
29 // stockObjectsReport.Load(reportPath);
30
31 for (int i = 1; i < 5; i++)
32 {
33 Res m_Res = new Res();
34 m_Res.X = 100*i;
35 m_Res.Y = 2;
36 m_Res.X1 = 10;
37 m_Res.X2 = 12;
38 m_Res.Y1 = 4;
39 m_Res.Y = 5;
40 stockValues.Add(m_Res);
41 }
42
43 //stockObjectsReport.SetDataSource(stockValues);
44 string reportPath2 = @"..\..\CrystalReport3.rpt";
45
46 ReportDocument subReport = new ReportDocument();
47 stockObjectsReport.Load(reportPath2);
48 subReport=stockObjectsReport.OpenSubreport("CrystalReport2.rpt");
49 subReport.SetDataSource(stockValues);
50 crystalReportViewer1.ReportSource = stockObjectsReport;
51 }
52 }
53 }

  水晶报表设计器中首先要设置纸张,接下来主要就是绘制线形成表格。下面打开字段资源管理器,选择数据库专家,将自己新建的Res的.Net对象添加到选定表。

在子表设计器中通过组专家设置组字段。这里数据的显示主要依靠组和字段,结果见下图4。在主表中右键单击选择插入子表,我这里选择子表数据从已有的建立,当然也可以建立新的啦!

图2

图3

图4
最后是模拟结果:

Crystal Reports 9.2 中文版(水晶报表) 下载,,软件版本:9.2.0.448不过现已出了Crystal Reports Professional v9.2.2.634 (c) Crystal Decisions,有足够的空间就提供.这是一个很不错的报表控件,我相信很多朋友都听说过吧!Crystal Reports 用于处理数据库,帮助用户分析和解释重要信息。使用 Crystal Reports 可以方便地创建简单报表,同时它也提供了创建复杂或专用的报表所需的整套工具。 创建所能想象的任何报表 Crystal Reports几乎可以从任何数据源生成您需要的报表。内置报表专家在您生成报表和完成一般的报表任务过程中,会一步一步地指导您进行操作。报表专家通过公式、交叉表、子报表和设置条件格式帮助表现数据的实际意义,揭示可能被隐藏掉的重要关系。如果文字和数字确实不够充分,则用地理地图和图形进行形象的信息交流。 将报表扩展到 Web Crystal Reports 的灵活性并未停留在创建报表这一功能上 ?您可以用各种各样的格式发布报表,包括用 Microsoft 的 Word 和 Excel 发布、通过电子邮件甚至 Web 发布。高级的 Web 报表功能允许工作组中的其他成员在他们自己的 Web 浏览器中查看或更新共享报表。 将报表并入应用程序通过将 Crystal Reports 的报表处理功能整合到自己的数据库应用程序中,应用程序和 Web 开发人员可以节省开发时间并满足用户的需求。Crystal Reports 支持大多数流行的开发语言,可以方便地在任何应用程序中添加报表。 不论您是 IT 行业的站点管理员,还是营销推广经理,也无论您是金融业的数据库管理员还是 CEO,Crystal Reports 都堪称是一个功能强大的工具,它可以帮助每一个人分析、解释重要信息。感谢 revenant 上传!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值