使用 Crystal Reports 在 .NET 2005 中开发报表
一个简单的例子,连接到 Oracle 数据库,使用 DataSet 检索数据,然后使用 CrystalReportViewer 显示 Web 报表
引言
当使用 .NET 2005 和 Oracle 数据库开发 Web 应用程序时,我们收到了客户的需求。他们希望我们打印带有每页页眉和页脚的报表,并将文件转换为其他文件格式,例如 Excel。可以使用 Crystal Reports 在 .NET 2005 中实现此需求。本文是我们关于如何使用 Crystal Reports 在 .NET 2005 中使用 Oracle 开发报表的笔记,以及部署包含 Crystal Reports 的网站(这花费了我们很多时间,尤其是在部署方面)。希望它可以帮助您,并节省您一些时间。
使用 Crystal Reports 在 .NET 2005 中开发报表
使用 Visual Studio .NET 2005 中的 Crystal Reports,您可以创建非常复杂的报表。我们只是给出一个简单的例子,连接到 Oracle 数据库,使用 DataSet 检索数据,然后使用 CrystalReportViewer 显示 Web 报表。
1. 从数据源检索数据到 DataSet
OracleAccess oa = new OracleAccess(login, pwd, database);
DataSet ds = oa.Get_Data(id));
ds.Tables[0].TableName = "DTPrint";
为了方便演示,我们的代码从 XML 文件读取数据到数据集:XMLFile.xml
<Employee Name="AAA" age="30" Sex="F" BirthDate="1/1/1960"></Employee>
<Employee Name="BBB" age="31" Sex="M" BirthDate="1/2/1960"></Employee>
DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath("App_Data/XMLFile.xml"));
ds.Tables[0].TableName = "DTEmployees";
2. 为可用数据源创建 DataSet DSEmployees.xsd
在 App_code 目录中,添加 DataSet DSEmployees.xsd。Crystal Reports 将找到此数据源。然后添加 DataTable DTEmployees
及其列(姓名、年龄、性别和出生日期)到 DataSet
中。
3. 创建 Crystal Report:CREmployees.rpt
添加新建项目 | CrystalReport | 使用报表向导。在标准报表创建向导窗口中,您可以从项目数据 | ADO.NET DataSets | DSEmployees 中的可用数据源中找到表 DTEmployees。选择此可用数据源 DTEmployees。
4. 编辑您的 Crystal Report
为此报表添加字段、页眉、页脚等。
5. 创建一个网页 CRPage.aspx
拖动一个 CrystalReportViewer CRVEmployees。在 Page_load 事件中,加载报表,并将其分配给 CRVEmployees 的 reportsource。
ReportDocument rd;
DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath("App_Data/XMLFile.xml"));
ds.Tables[0].TableName = "DTEmployees";
rd = new ReportDocument();
rd.Load(Server.MapPath("CREmployees.rpt"));
rd.SetDataSource(ds);
CRVEmployees.ReportSource = rd;
CRVEmployees.DataBind();
6. 在浏览器中查看 CRPage.aspx
以下是报表的外观。
部署包含 Crystal Reports 的 .NET 2005 网站
有许多方法可以部署包含 Crystal Reports 的 .NET 2005 网站。我们只探讨了以下可行的方法。
1. 创建一个用于部署的 Web 安装项目
在“文件”菜单上,选择新建 | 项目;在“新建项目”窗口中,选择其他项目类型 | 安装和部署,选择Web 安装项目;输入项目名称、位置,并选择“解决方案”添加到解决方案中;
2. 添加合并模块
在解决方案资源管理器中,右键单击项目 DeploymentTest,然后选择添加 | 合并模块;选择 CrystalReportsRedist2005_x86.msm;
解决方案资源管理器应该如下所示
如果您的解决方案资源管理器看起来不像上面那样,您将需要下载 CrystalReportsRedist2005_x86.msm。然后将其复制到文件夹 \Program Files\Common Files\Merge Modules 中。如果 microsoft_vc80_atl_x86.msm 和 policy_8_0_microsoft_vc80_atl_x86.msm 不存在,您也需要下载并复制它们。如果添加合并模块 CrystalReportsRedist2005_x86.msm 后,它们仍然不在“已检测到的依赖项”中,您可能需要卸载您的 Visual Studio 2005。重新安装时,勾选“Itanium Compilers and Tools”和“X64 Compilers and Tools”。 [2]
3. 将输出文件添加到 Web 安装项目
在解决方案资源管理器中,右键单击安装项目 DeploymentTest,添加 | 项目输出…;选择内容文件,将配置保留为活动;
单击“确定”;双击解决方案资源管理器中的项目来自…(活动)的内容文件;在“属性”窗口中,将 DefaultDocument 设置为您的网站的起始页面 (CRPage.aspx);VirtualDirectory 属性设置为项目名称 (DeploymentTest)。
4. 构建 Web 安装项目
选择安装项目 DeploymentTest;从“生成”菜单中,选择“生成 DeploymentTest”。
5. 部署 Web 安装项目
在 Visual Studio 之外,转到您的安装项目目录,将您的安装项目文件夹 (DeploymentTest) 复制到您的远程 Web 服务器;在您的 Web 服务器上,双击您的安装项目 DeploymentTest.msi 以部署您的网站。
执行所有步骤,这将部署到您的默认网站 C:\Inetpub\wwwroot\ DeploymentTest。
6. 为 Web 项目创建一个虚拟目录
在您的 IIS 应用程序服务器管理控制台中,创建一个虚拟目录,该目录将内容目录路径引用到 C:\Inetpub\wwwroot\ DeploymentTest;您还应该检查 IIS 服务器的 ASP.NET 版本,应用程序池。您还应该将“文档 | 默认内容页面”设置为您的起始页面 (CRPage.aspx)。
参考文献
- Visual Studio 2005 的 Crystal Reports 演练
- Crystal Reports for .NET Framework 2.0 - 使用合并模块部署
- David McAmis, Professional Crystal Reports for Visual Studio .NET, 2nd Edition