使用Crystal Reports报告XML数据






4.04/5 (13投票s)
本文将向您展示如何使用 Crystal Reports 和 Windows Forms 客户端报告 XML 数据。
概述
本文将向您展示如何使用 Crystal Reports 和 Windows Forms 客户端报告 XML 数据。
引言
使用 Crystal Reports (CR) 报告 MS Access、SQL Server 和 Oracle 等数据源很常见。那么 XML 作为数据源呢?嗯,您可能想知道如何做到这一点。这甚至可能吗?好吧,在这篇文章的帮助下,我将向您展示如何使用 XML 数据源并使用 Crystal Reports 对其进行报告。
我假设读者对 Visual Studio (VS) 2005 IDE 和 Crystal Reports 有基本的了解。您还应该能够熟练使用 C# 编写代码。对 XML 架构和 ADO.NET 有基本的了解是最好不过的。
什么是 XML 数据?
在查看演示之前,让我们了解什么是 XML 数据!简单来说,XML 代表可扩展标记语言。它是 W3C 的一项倡议,旨在允许交换人类和计算机都易于理解的信息。以 XML 格式存储的信息可以在跨平台场景中工作。例如,如果您的信息采用 XML 格式,那么在 UNIX 和 Windows 平台之间共享就很容易。XML 文件中的数据以用户定义的标签呈现。以下是我在此演示中使用的示例 XML 文件中的部分列表
<CD>
<TITLE>Empire Burlesque</TITLE>
<ARTIST>Bob Dylan</ARTIST>
<COUNTRY>USA</COUNTRY>
<COMPANY>Columbia</COMPANY>
<PRICE>10.90</PRICE>
<YEAR>1985</YEAR>
</CD>
如您所见,每个 <CD>
标签都相当于一个包含与 CD 相关信息的行。此外,每个列都唯一地标识为一个标签。您可以从此处了解更多关于 XML 的信息:https://w3schools.org.cn/xml/xml_whatis.asp。好的,让我们开始我们的演示,看看使用 Crystal Reports 和 Windows Forms 报告 XML 数据是多么容易。
步骤 1:让我们创建一个 Windows 应用程序项目
如果 VS 2005 IDE 尚未启动,您可以通过单击 Windows“开始”按钮 ->“所有程序”->“Microsoft Visual Studio 2005”,然后单击“Microsoft Visual Studio 2005”图标来启动 IDE。您可能有其他方法来启动 IDE,例如单击桌面快捷方式等等。
请执行以下步骤来创建一个 Windows 应用程序项目
- 单击菜单“文件”->“新建”->“项目…”,或者您可以按快捷键 Ctrl + Shift + N(请参见图 2)。
- 从“新建项目”对话框中,选择 Visual C# -> Windows。
- 从“模板”中,选择 Windows 应用程序。
- 请给应用程序命名;我将项目命名为“XMLCRReport”。您可以根据自己的偏好选择不同的位置来存储应用程序文件。请参见图 2,了解命名过程的说明。
- 单击“确定”按钮完成此过程。VS 2005 将创建一个新项目并默认添加
Form1
。
让我们根据表 1 设置 Form1
的属性。如果属性工具箱在 IDE 中不可见,您可以按 F4 键使其可见。在使用属性工具箱更改属性之前,请确保选择 Form1
。
属性 | 值 |
文本 |
使用Crystal Reports报告XML数据 |
大小 |
700,300 |
步骤 2:让我们将 CrystalReportViewer 添加到 Form1
我们需要 Crystal Report Viewer (CRV) 控件来向用户显示报告。报告查看器为您的报告注入生命。它不仅可以预览输出,还可以让您以各种流行格式(PDF、Excel 等)生成信息。您还可以在查看输出时打印报告的硬拷贝。
您可以按如下方式将 CrystalReportViewer
添加到 Form1
- 确保
Form1
当前在设计器中打开。 - 将“工具箱”->“CrystalReports”->“CrystalReportViewer”拖放到
Form1
上。此步骤将创建一个名为crystalReportViewer1
的CrystalReportViewer
新实例。您可以随意命名它;我将使用默认名称。
完成步骤 1 和步骤 2 后,您的项目应类似于图 3。
步骤 3:向项目添加数据集
尽管有不同的方法可以将数据获取到 CrystalReportViewer
,我将在这里向您展示 DataSet 技术。让我们继续向项目添加一个 DataSet
。将 DataSet
添加到项目需要以下步骤
从解决方案资源管理器中选择“添加”->“新建项”->“DataSet”。将名称从 DataSet1
更改为 dsCDCatalog
,然后单击“添加”按钮。请取消 TableAdapter 配置向导;我们将使用 DataSet 设计器添加 DataTable
。
让我们将 DataTable
添加到我们新创建的 DataSet
。DataTable
对于加载报告数据至关重要;我们将在设计报告时使用来自 DataSet
/DataTable
的信息。将 DataTable
添加到 DataSet
(dsCDCatalog
) 需要以下步骤
双击解决方案资源管理器中的 dsCDCatalog
;它将打开设计器视图。右键单击设计器表面并选择“添加”->“DataTable”。单击标题并将其名称更改为 dtCDCatalog
(参见图 4)。
让我们开始向 DataTable
(dtCDCatalog
) 添加列。您的设计器屏幕应如图 5 所示。右键单击 dtEmployee
并选择“添加”->“列”以开始向 DataTable
添加列。
重复以下列的操作
- 标题 (
String
) - 艺术家 (
String
) - 国家/地区 (
String
) - 公司 (
String
) - 价格 (
Double
) - 年份 (
String
)
当您添加列时,它们默认将是 String
数据类型。选择一列后,转到“属性”窗口将其从 String
更改为 Int32
。添加完所有列后,它应类似于图 6。
步骤 4:向项目添加报告
到目前为止,我们已经创建了项目,并添加了 CrystalReportViewer
和 DataSet
。现在是时候处理报告了。以下是添加报告(rptXMLData.rpt)所需的步骤
从解决方案资源管理器中选择“添加”->“新建项”->“Crystal 报告”。将名称从 CrystalReport1.rpt 更改为 rptXMLData.rpt,然后单击“添加”按钮完成操作。将出现“Crystal Reports Gallery”对话框,选择“作为空白报告”选项,然后单击“确定”按钮完成添加报告的过程。
默认情况下,您将看到 rptXMLData.rpt 在设计器模式及其默认设置中为您打开。对于此示例,我将只使用页面标题和页脚。我将减少报告标题和页脚的高度。通常,完成所有这些操作后,您的报告设计器应类似于图 7。
向项目添加报表很容易,挑战在于填充空白报表布局。无论这是您的第一个报表,还是您像我一样是报表狂热者,我们都必须处理报表编写最基本的构建块;即页眉、详细信息和页脚。
通常,报表是根据特定的页面大小和布局设计的。我们的报表是信纸大小和纵向布局。您可以通过右键单击开放设计器表面(灰色区域)上的任意位置并选择“报表”和“设计属性”来探索附加到报表布局的各种属性。
在开始设计过程之前,最好先在纸上画出报告的原型。如您在图 1 中所见,我们在页眉部分有报告名称和报告日期。正文部分包含员工列表信息;页脚包含页码。
页眉部分
我们的页眉部分由五个文本对象、两个线条对象和一个特殊字段组成。请从“工具箱”->“Crystal Reports”中拖放一个文本对象和线条对象。您可以从“字段资源管理器”->“特殊字段”->“打印日期”中拖放“打印日期”(一个特殊字段)。您还会注意到,在将报告对象放置到设计器表面后,我更改了颜色和字体。请确保您的页眉看起来类似于图 8。
页脚部分
页脚部分很简单,只有一个特殊字段和一个线条对象。与页眉部分一样,您可以从“工具箱”->“Crystal Reports”添加一个线条对象。同样,您可以从“字段资源管理器”->“特殊字段”->“N/M 页”中拖放“N/M 页”(一个特殊字段)。请参阅图 8 并确保页脚看起来类似。
详细信息部分
报告的详细信息部分将包含 CD 目录列表的详细信息。现在的问题是,我们将从哪里获取数据呢?嗯,如您所知,一开始我们向这个项目添加了一个 DataSet
,我们将使用这个 DataSet
作为报告的数据源。
将 DataSet
添加为报表的数据源很容易。您将从右键单击报表设计器上的任意空白区域 -> 数据库 -> 数据库专家… 开始。此操作的结果将出现一个“数据库专家”对话框。您可以单击“项目数据”并展开“ADO.NET DataSet”节点。请从我们的 DataSet
中选择 dtCDCatalog
DataTable
,然后单击“>”按钮将其移动到右侧的“选定表”部分(请参见图 9)。
一旦指定了报告源,我们所要做的就是将 DataTable
中的字段拖放到报告设计器表面上的“详细信息”部分中。您可以将“字段资源管理器”中的“标题”拖放到“详细信息”部分中。
当您将字段拖放到“详细信息”部分时,您会注意到字段的标题也已添加到报表设计器中。由于我们已经处理了字段标题,因此只需删除默认添加的字段标题。请确保最终的报表设计器布局类似于图 10。
尽管报表设计看起来已经完成,但我们尚未处理此报表的层次结构功能。如您在图 1 中所见,所有员工姓名应根据 ManagerID 关联形成层次结构。
步骤 5:C# 接口代码
好的,我们已经得到了报表设计所需的一切。请确保 Form1.cs 后面的 C# 代码如下
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace XMLCRReport
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
DataSet dsReport = new dsCDCatalog();
// create temp dataset to read xml information
DataSet dsTempReport = new DataSet();
try
{
// using ReadXml method of DataSet read XML data from books.xml file
dsTempReport.ReadXml(@"C:\articles\XmlCrystalReport\cd_catalog.xml");
// copy XML data from temp dataset to our typed data set
dsReport.Tables[0].Merge(dsTempReport.Tables[0]);
//prepare report for preview
rptXMLData rptXMLReport = new rptXMLData();
rptXMLReport.SetDataSource(dsReport.Tables[0]);
crystalReportViewer1.DisplayGroupTree = false;
crystalReportViewer1.ReportSource = rptXMLReport;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
}
让我们构建并运行示例
让我们构建项目。如果解决方案中只有一个项目,那么构建项目有几种不同的方法;构建解决方案和项目是相同的。您可以单击主工具箱上的小绿色“播放”按钮,或者按键盘上的 F5 键以在运行时启动应用程序。如果一切顺利,那么您的报表输出应该与图 1 相似。如果您遇到任何问题,我建议您验证所有步骤并重试。
结论
您可以看到使用 Crystal Reports 显示 XML 数据是多么简单。感谢您的阅读;一如既往,我期待您的评论和建议。请随时发送至 asif.blog@gmail.com。