`
lumingming1987
  • 浏览: 116283 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

转:JAVA水晶报表从环境搭建到创建动态水晶报表

 
阅读更多

首先第一步贴上项目截图(少了一个rpt_report文件夹,因为是网上的所以这里没加,各位可以加下):声明该项目是网上下载。(比较简单,纯属偷懒,有现成环境)。可以自己修改,需要注意的就是蓝色标记的地方。报表存放的位置可以根据配置文件配置存放,下面有介绍。

第一:crystalreportviewers11这个文件夹可以通过官方网站中软件中获取,软件名称为(CR2008_SP1_55225)获取的方法是安装软件,软件会提供java显示水晶报表所需的所有文件,安装后的目录为:

这里是crystalreportviewers12,版本比我这里的高,我用的是网上的为crystalreportviewers11版本的。安装后就可以用这个制作水晶报表了。

第二:其中web.xml需要注意的地方就是:添加如下代码

[html] view plaincopy
 
  1.         <display-name>SampleWeb</display-name>  
  2. <context-param>  
  3.     <param-name>crystal_image_uri</param-name>  
  4.     <param-value>/crystalreportviewers11</param-value>  
  5. </context-param>  
  6. <context-param>  
  7.     <param-name>crystal_image_use_relative</param-name>  
  8.     <param-value>webapp</param-value>  
  9. </context-param>  
  10. <jsp-config>  
  11.     <taglib>  
  12.         <taglib-uri>/crystal-tags-reportviewer.tld</taglib-uri>  
  13.         <taglib-location>  
  14.             /WEB-INF/crystal-tags-reportviewer.tld  
  15.         </taglib-location>  
  16.     </taglib>  
  17. </jsp-config>  

crystal-tags-reportviewer.tld上面截图没有不好意思。可以自己添加下


关于不同版本的水晶报表web.xml的配置可以参考http://blog.sina.com.cn/s/blog_6ff49b9d01014hvr.html

第三:CRConfig.xml配置如下:

[html] view plaincopy
 
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <CrystalReportEngine-configuration>  
  3.     <reportlocation>../../rpt_report</reportlocation>  
  4.     <timeout>10</timeout>  
  5.     <keycode>AV864-01CS00G-0ZG518J</keycode>  
  6. </CrystalReportEngine-configuration>  


具体<reportlocation>../../rpt_report</reportlocation>的含义自己可以百度,我在这里说下我配置的意思是,水晶报表加载的报表文件也就是rpt文件的路径在WebRoot中的rpt_report文件夹中若配置成<reportlocation>../..</reportlocation>就是说明加载的rpt文件在webroot下,具体rpt文件放在哪里可以自己灵活配置。

完成如上步骤可以算是水晶报表在myeclipse中的环境算是搭建完成。

下面是显示最简单的报表(非动态数据)

basic.jsp

[java] view plaincopy
 
  1. <%@ page language="java" pageEncoding="gb2312"%>  
  2. <%@ page import="com.crystaldecisions.reports.reportengineinterface.*"%>  
  3. <%@ page import="com.crystaldecisions.report.web.viewer.*" %>  
  4. <%  
  5.      CrystalReportViewer crv = new CrystalReportViewer();  
  6.      JPEReportSourceFactory jrsf = new JPEReportSourceFactory();  
  7.      crv.setReportSource(jrsf.createReportSource("报表2.rpt",request.getLocale()));  
  8.      crv.processHttpRequest(request,response,application,null);  
  9.  %>  

该jsp放在webroot下就可以了。我们这里加载的是“报表2.rpt”文件,该文件放在WebRoot中的rpt_report文件夹中,也就是刚才我们配置的路径。

若报表能够显示那说明我们从头到现在都没有问题,其中报表自己制作。至于如何制作可以参考

http://topic.csdn.net/u/20091202/20/fe299b0b-467d-4b20-aeb0-262f6492eaa4.html?25378 应该容易看懂并且掌握简单的制作。

 

 

下面是介绍后台数据显示在rpt文件中,建议各位先看下http://blog.163.com/huang_ying_lu/blog/static/269998320088108233237/楼主写的。按照里面的介绍然后自己写的话应该没有问题。

关键代码是

[java] view plaincopy
 
  1. 第一获取数据源大家应该没有什么问题。  
[java] view plaincopy
 
  1. /** *//** 
  2.       *    连接数据库,通过sql查询语句进行查询,返回结果集 
  3.      */  
  4.     private static ResultSet getResultSetFromQuery(String query, int scrollType)  
  5.         throws SQLException, ClassNotFoundException ...{  
  6.          Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");  
  7.         final String DBUSERNAME = "username";  
  8.         final String DBPASSWORD = "password";  
  9.         final String CONNECTION_URL = "jdbc:microsoft:sqlserver://localhost:1433;database=dname";  
  10.           
  11.          java.sql.Connection connection = DriverManager.getConnection(CONNECTION_URL, DBUSERNAME, DBPASSWORD);   
  12.          Statement statement = connection.createStatement(scrollType, ResultSet.CONCUR_READ_ONLY);  
  13.           
  14.         return statement.executeQuery(query);  
  15.   
  16.      }  
[java] view plaincopy
 
  1. 将查询出来的数据放到报表源中也就是reportClientDoc.getDatabaseController().setDataSource(resultSet,tableAlias, "resultsetTable");  
[java] view plaincopy
 
  1. /** *//** 
  2.   * 通过sql语句过滤报表数据,在.net就不用怎么惨了 
  3.  */  
  4. public boolean isReportSourceInSession(String session_name,HttpSession session) throws ReportSDKException, SQLException, ClassNotFoundException...{  
  5.     boolean flag=false;  
  6.     try ...{  
  7.         //打开水晶报表  
  8.          ReportClientDocument reportClientDoc = new ReportClientDocument();  
  9.          reportClientDoc.open(REPORT_NAME, 0);  
  10.        <span style="color:#ff0000;"//sql查询语句,返回的字段数必须跟报表里面的一样,不能多也不能少,并且字段的类型要跟报表的一样,其他不管是什么数据都可以    
  11.           //from 表这里要填完整,如数据库名.dbo.数据库表,最好做个别名  
  12. an>             String query = "select tt.test_1,tt.test_2,tt.test_3,tt.test_4 from dname.dbo.test tt";  
  13.           
  14.          ResultSet resultSet = this.getResultSetFromQuery(query,ResultSet.TYPE_SCROLL_INSENSITIVE);  
  15.   
  16.          String tableAlias = reportClientDoc.getDatabaseController().getDatabase().getTables().getTable(0).getAlias();  
  17.         //把结果集放进报表里,将会自动产生一个datasource  
  18.          reportClientDoc.getDatabaseController().setDataSource(resultSet,tableAlias, "resultsetTable");  
  19.          session.setAttribute(session_name, reportClientDoc.getReportSource());  
  20.          flag=true;  
  21.         return flag;  
  22.      } catch (Exception e) ...{  
  23.         // TODO: handle exception  
  24.          e.printStackTrace();  
  25.         return flag;  
  26.      }          

最后动态显示的jsp代码为:

[html] view plaincopy
 
  1. <%@page import="com.JRC.util.JRC_ResultSet_DataSource" %>  
  2. <%--webreporting.jar  --%>  
  3. <%@page import="com.crystaldecisions.report.web.viewer.*" %>  
  4. <%--jrcerom.jar --%>  
  5. <%@ page import="com.crystaldecisions.reports.sdk.*" %>  
  6. <%      
  7.      JRC_ResultSet_DataSource jrcd=new JRC_ResultSet_DataSource("resultSet.rpt");  
  8.     if(!jrcd.isReportSourceInSession("reportSource",session)  
  9.          response.sendRedirect("error.html");  
  10.      CrystalReportViewer crViewer=new CrystalReportViewer();  
  11.      crViewer.setOwnPage(true);  
  12.      crViewer.setOwnForm(true);  
  13.      crViewer.setPrintMode(CrPrintMode.ACTIVEX);  
  14.       
  15.      Object reportSource=session.getAttribute("reportSource");  
  16.      crViewer.setReportSource(reportSource);  
  17.       
  18.      crViewer.processHttpRequest(request,response,this.getServletConfig().getServletContext(),null);  
  19. %>  


这里值得我们注意的是关于数据源和查询的数据的字段。

第一:数据源必须和制作报表的时候用的数据源是一样的,也就是报表用的是sql2005,java连接的也是sql2005,

若用的是oracle,java连接的也是oracle。关于查询的sql语句中使用的字段也必须和制作报表用到的字段一模一样。

在制作报表的时候我们可能会用到某种表的某3个字段,在后台的sql语句我们也必须使用这个3个字段。

 

上述只是涉及到单表多表可能会比较麻烦一点。

本人先介绍到这里,至于多表综合显示看各位的需求了,若大家都需要我帮助各位解答的话,那各位留言吧。若有说的不够好的地方希望大家多多指正,谢谢。

 

 

资源文件:http://download.csdn.net/detail/ylovep/5213794

分享到:
评论
1 楼 吉米家 2015-01-28  
水晶报表写代码过程太繁琐,帆软报表直接一气呵成更好

相关推荐

    Java水晶报表开发技术

    2. 创建报表:在水晶报表设计器中创建报表模板,保存为.RPT文件。 3. 集成API:在Java代码中,使用水晶报表的API加载.RPT文件,设置数据源,执行查询并填充报表。 4. 显示报表:在Java GUI或Web应用中,可以嵌入报表...

    java水晶报表开发

    2. **水晶报表运行时**:Java应用需要集成水晶报表的运行时库,以处理.RPT文件并生成报表。这通常涉及到添加相应的JAR文件到项目的类路径中。 3. **数据连接**:水晶报表可以连接多种数据源,包括数据库、XML文件、...

    java水晶报表案例

    总的来说,这个"java水晶报表案例"为学习者提供了一个实践平台,通过它可以直接体验到水晶报表在Java Web环境中的工作流程,无需复杂的数据库配置。通过研究和调试“CRtest”文件,开发者可以深入理解水晶报表的集成...

    java 水晶报表环境

    Java 水晶报表环境是Java开发者用于创建、设计和展示报表的重要工具。水晶报表(Crystal Reports)由SAP公司开发,它允许程序员利用丰富的数据源,如数据库、Excel表格等,来创建复杂的业务报告。在Java环境中集成...

    水晶报表动态显示图片

    在水晶报表中动态显示图片,通常涉及到以下几个关键知识点: 1. **数据链接**:水晶报表可以将图片存储在数据库中或者从外部URL加载。如果图片存储在数据库中,需要设置字段类型为“OLE对象”或“图像”,并确保...

    java开发水晶报表所有类包及导出PDF实例

    1. 设计报表:在水晶报表设计器中,你可以添加数据源,如数据库连接,然后拖拽字段到报表上,设计报表布局和样式。 2. 保存报表文件:通常以`.rpt`文件格式保存,这是水晶报表的二进制格式。 在Java代码中使用水晶...

    java水晶报表demo

    综上所述,这个“java水晶报表demo”涵盖了从数据库连接、报表设计到Java集成的多个环节,是一个宝贵的教育资源,有助于提升开发者在Java环境中使用水晶报表的能力。通过深入学习和实践,我们可以掌握创建高效、美观...

    Java水晶报表 Java水晶报表.ppt

    3. **集成能力**:Java水晶报表能够无缝集成到Java应用程序和Web环境中,例如JBuilder 2005。通过API调用,开发者可以在自己的应用中嵌入报表,使得应用程序具有数据可视化和分析的功能。此外,它还支持多种流行开发...

    Java水晶报表教程

    Java水晶报表教程主要聚焦于如何在Java环境中使用水晶报表(Crystal Reports)这一强大的报表生成工具。水晶报表是一款广泛应用于商业智能领域的软件,它允许开发者从各种数据源中提取信息,生成详细、美观的报表,...

    java水晶报表教程

    Java水晶报表教程主要聚焦于如何使用Crystal Reports 2008与JBuilder 2005在Java环境中创建和部署报表。 Crystal Reports是一款强大的报表设计工具,它允许开发者利用各种数据库资源来分析和呈现关键信息。这个教程...

    水晶报表-动态加载图片

    水晶报表动态加载图片技术详解 水晶报表是一种常用的报表生成工具,但是在实际应用中,,我们经常需要在报表中加载图片,但是水晶报表并不支持直接加载图片文件。为了解决这个问题,我们可以使用动态加载图片的技术...

    水晶报表应用在java解决方案

    描述中提到,开发者面临的问题是如何在Java的JSP(Java Server Pages)环境中动态地使用水晶报表,并且能够根据传入的参数来展示数据,同时支持报表导出为多种格式,如Word、Excel和PDF。 在Java环境下使用水晶报表...

    java实现水晶报表PPT

    Java与水晶报表的结合,使得在Web应用或者桌面应用中嵌入动态报表成为可能。 在水晶报表开发中,用户可以利用 Crystal Reports 2008 这样的版本设计出所需的报表模板。报表设计界面提供了丰富的可视化工具,如报表...

    Java水晶报表中文文档

    - Servlet集成:在Web应用中,水晶报表可以嵌入到Servlet或JSP中,实现Web端的动态报表生成。 3. **水晶报表的主要功能** - 数据源管理:支持多种数据源类型,包括关系型数据库、XML、文本文件等。 - 报表设计:...

    水晶报表java web实现

    3. **报表集成**:将水晶报表的API集成到Java代码中,创建报表对象并加载设计好的报表模板。 4. **数据绑定**:在运行时,使用从数据库获取的数据填充报表对象。 5. **JSP渲染**:在JSP页面中,调用Java方法生成报表...

    在水晶报表中使用SQL数据库

    1. **水晶报表简介**:水晶报表是Business Objects(现为SAP的一部分)的产品,它提供了丰富的报告设计环境,支持多种数据源,包括关系型数据库、多维数据集、Excel文件等。通过拖放功能和预定义的图表样式,用户...

    JFreeChart水晶报表制作

    JFreeChart是一款强大的Java图表库,它允许开发者创建多种类型的图表,如柱状图、饼图、线图、散点图、甘特图等,并且能够集成到各种Java应用程序、Swing组件、Web应用以及服务器端应用中。水晶报表(Crystal ...

Global site tag (gtag.js) - Google Analytics