且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Ireport+jfreechart+Jasperreport开发图表

更新时间:2022-09-09 22:12:39

http://wenku.baidu.com/view/78e0ed74a417866fb84a8eca.html

1.Ireport生成图表

下载Ireport3.74

 

1、  文件-新建

Ireport+jfreechart+Jasperreport开发图表

2、  选择Blank A4 、—》 lannch Report Wizard

3、  设定报表名称,生成完报表的存放位置,选择下一步

Ireport+jfreechart+Jasperreport开发图表

4、  新建数据源new

Ireport+jfreechart+Jasperreport开发图表

5、选择Database JDBC connection

Ireport+jfreechart+Jasperreport开发图表

注: 将以下红色框内容按情况填写正确。

Ireport+jfreechart+Jasperreport开发图表

 

注:由于ireport只提供了mysqldirver,如用oracle数据库需先将驱动jar包导入ireport

导入方式:工具->选项->CLASSPATH把相关jar包导入。

6、 输入SQL语句 SQL是报表要查询的数据下一步。

注:这块没有给SQL传入参数,传参方法请参考报表生成PPT

Ireport+jfreechart+Jasperreport开发图表

7、 把相应查询出来报表要用到的File添加进去,下一步->完成。

Ireport+jfreechart+Jasperreport开发图表

8、 以下band只留Summary Band,其他band鼠标右键Delete Band并且在Summary Band中添加报表。

Ireport+jfreechart+Jasperreport开发图表

注:在Detail1中添加报表容易产生重复报表。

9、 chart直接拖入 Summary Band区域,选择报表下一步。

Ireport+jfreechart+Jasperreport开发图表

10、添加需要统计的数据组到第一个对话框,对应组的值放入第二个对话框。选择相应的Field

Ireport+jfreechart+Jasperreport开发图表

注:如没出来定义报表的时候选择的字段需要点击报表Edit Query把相应的sql对应的字readFields里面。

 

11、增加类别

Ireport+jfreechart+Jasperreport开发图表

12、增加柱图显示数量

 Ireport+jfreechart+Jasperreport开发图表

13OK图表生成了。Preview查看下效果吧。后续编译生成.jasper文件放入工程中。

2.关于撰取

Ireport+jfreechart+Jasperreport开发图表

注:其中HyperLink targetHyperLinkType都是需要设置参数,HyperLink Referece Expression

是撰取的url附带参数可以实现分类撰取。

3.Jasper导出代码部分

需要配置一个servletweb.xml

    <servlet>

        <servlet-name>ImageServlet</servlet-name>

        <servlet-class>net.sf.jasperreports.j2ee.servlets.ImageServlet</servlet-class>

    </servlet>

    <servlet-mapping>

    <servlet-name>ImageServlet</servlet-name>

       <url-pattern>/image</url-pattern>

    </servlet-mapping>

 

我们工程需要加入jcommon-1.0.16.jar如需要导出样式加入jasperreports-chart-themes-3.7.4.jar

代码:

1、公共调用的工具类负责生成并导出图表:

2、对应的Action(撰取)

2.1、被撰取action

3、展示的JSP

3、图表的实例生成文件

4、撰取图表

 

Action:

 

  1. package com.xin.struts2;  
  2.   
  3. import java.io.File;  
  4. import java.sql.Connection;  
  5. import java.sql.DriverManager;  
  6. import java.sql.SQLException;  
  7. import java.util.Date;  
  8. import java.util.HashMap;  
  9. import java.util.Map;  
  10.   
  11. import javax.servlet.http.HttpServletRequest;  
  12.   
  13. import org.apache.struts2.ServletActionContext;  
  14. import org.apache.struts2.convention.annotation.Action;  
  15. import org.apache.struts2.convention.annotation.Result;  
  16.   
  17. import com.opensymphony.xwork2.ActionSupport;  
  18.   
  19. @Action(value = "jasperTest",results={@Result(name="jasper",location="/jasperTest.jsp")})  
  20. public class JasperTestAction extends ActionSupport{  
  21.       
  22.     private StringBuffer vpnbuffer = null;  
  23.       
  24.       
  25.   
  26.     public StringBuffer getVpnbuffer() {  
  27.         return vpnbuffer;  
  28.     }  
  29.   
  30.   
  31.     public void setVpnbuffer(StringBuffer vpnbuffer) {  
  32.         this.vpnbuffer = vpnbuffer;  
  33.     }  
  34.   
  35.     private static final String URL = "xxxxxxxxxxxxxxxxxxx";  
  36.     public String getHtml(){  
  37.         Connection conn = getConn();  
  38.         HttpServletRequest request = ServletActionContext.getRequest();  
  39.         Map<String,String> parameters = new HashMap<String,String>();  
  40.         parameters.put("title""xxxxxxx");  
  41.         parameters.put("title2""xxxxxx");  
  42.         vpnbuffer = new StringBuffer();  
  43.         File reportFile = new File(ServletActionContext.getServletContext().getRealPath(  
  44.                 File.separator + "report" + File.separator + "report1.jasper"));  
  45.         try {  
  46.             ChartReportUtil.genAndExpChart(vpnbuffer, conn, request, reportFile, parameters);  
  47.         } catch (Exception e) {  
  48.             e.printStackTrace();  
  49.         }  
  50.             System.out.println("sbuffer"+vpnbuffer);  
  51.         return "jasper";  
  52.     }  
  53.       
  54.       
  55.     private static Connection getConn(){  
  56.         Connection conn = null;  
  57.         try {  
  58.             Class.forName("oracle.jdbc.driver.OracleDriver");  
  59.         } catch (ClassNotFoundException e) {  
  60.             e.printStackTrace();  
  61.         }  
  62.         try {  
  63.             conn = DriverManager.getConnection(URL,"xxxxx","xxxxxx");  
  64.         } catch (SQLException e) {  
  65.             e.printStackTrace();  
  66.         }  
  67.         return conn;  
  68.     }  
  69.       
  70.     public static void main(String[] args) {  
  71.         System.out.println(new Date().toGMTString());  
  72.     }  
  73. }  

util:

  1. package com.xin.struts2;  
  2.   
  3. import java.io.File;  
  4. import java.sql.Connection;  
  5. import java.text.SimpleDateFormat;  
  6. import java.util.Calendar;  
  7. import java.util.HashMap;  
  8. import java.util.Map;  
  9.   
  10. import javax.servlet.http.HttpServletRequest;  
  11.   
  12. import net.sf.jasperreports.engine.JRException;  
  13. import net.sf.jasperreports.engine.JRExporterParameter;  
  14. import net.sf.jasperreports.engine.JRRuntimeException;  
  15. import net.sf.jasperreports.engine.JasperFillManager;  
  16. import net.sf.jasperreports.engine.JasperPrint;  
  17. import net.sf.jasperreports.engine.JasperReport;  
  18. import net.sf.jasperreports.engine.export.JRHtmlExporter;  
  19. import net.sf.jasperreports.engine.export.JRHtmlExporterParameter;  
  20. import net.sf.jasperreports.engine.util.JRLoader;  
  21. import net.sf.jasperreports.j2ee.servlets.ImageServlet;  
  22. /** 
  23.  * 图表工具类 
  24.  * @author xxxxx 
  25.  * 
  26.  */  
  27. @SuppressWarnings("unchecked")  
  28. public class ChartReportUtil {  
  29.       
  30.     //报表图片生成路径  
  31.     private static final String REPORT_IMG_DIR = "compReportImg";  
  32.       
  33.     /** 
  34.      * 生成并导出图形报表 
  35.      * @param buffer output HTML 
  36.      * @param conn  DB connection used for query 
  37.      * @param request  
  38.      * @param reportFile report JASPER file 
  39.      * @param parameters Used for the parameters of the query  
  40.      * @throws JRException  
  41.      */  
  42.     public static void genAndExpChart(StringBuffer sbuffer,Connection conn,HttpServletRequest request  
  43.             ,File reportFile,Map<String,String> parameters) throws Exception{  
  44.         try {  
  45.             if(!reportFile.exists()){ //Check file exists  
  46.                 throw new JRRuntimeException("jasper file is not found!");  
  47.              }  
  48.              if(null == sbuffer){ //Check StringBuffer init  
  49.                    
  50.                  throw new RuntimeException("StringBuffer is not init");  
  51.              }  
  52.              JRHtmlExporter exporter = new JRHtmlExporter();  
  53.              JasperReport jasperReport = (JasperReport) JRLoader.loadObject(reportFile.getPath());  
  54.              JasperPrint jasperPrint = null;  
  55.              jasperPrint = JasperFillManager.fillReport(jasperReport,parameters, conn);  
  56.              exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);  
  57.              exporter.setParameter(JRExporterParameter.OUTPUT_STRING_BUFFER,sbuffer);  
  58.              exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN,Boolean.FALSE);  
  59.              exporter.setParameter(JRHtmlExporterParameter.HTML_HEADER, "");  
  60.              exporter.setParameter(JRHtmlExporterParameter.BETWEEN_PAGES_HTML, "");  
  61.              request.getSession().setAttribute(ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, jasperPrint);  
  62.              String imgServDirUrl = REPORT_IMG_DIR + File.separator + getFileNameNoEx(reportFile.getName());//构造报表存放子目录,以期解决一次请求返回多个图形报表重叠现象  
  63.              File imgRealDir= new File(request.getRealPath(File.separator) + imgServDirUrl);  
  64.              if(!imgRealDir.exists()) {  
  65.                imgRealDir.mkdirs();  
  66.              }  
  67.              //重设JRHtmlExporterParameter.IMAGES_URI  
  68.              exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, request.getContextPath() +"/"+imgServDirUrl+ "/");  
  69.              exporter.setParameter(JRHtmlExporterParameter.IMAGES_DIR, imgRealDir);  
  70.              exporter.setParameter(JRHtmlExporterParameter.IS_OUTPUT_IMAGES_TO_DIR, Boolean.TRUE);  
  71.   
  72.              exporter.setParameter(JRHtmlExporterParameter.HTML_FOOTER, "");  
  73.              exporter.exportReport();  
  74.         }finally{  
  75.             if(conn!=null){  
  76.                 conn.close();  
  77.             }  
  78.         }  
  79.   
  80.     }  


 

JSP:

  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  2. <%  
  3. String path = request.getContextPath();  
  4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
  5. %>  
  6.   
  7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  8. <html>  
  9.   <head>  
  10.     <base href="<%=basePath%>">  
  11.       
  12.     <title>My JSP 'login.jsp' starting page</title>  
  13.       
  14.     <meta http-equiv="pragma" content="no-cache">  
  15.     <meta http-equiv="cache-control" content="no-cache">  
  16.     <meta http-equiv="expires" content="0">      
  17.     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
  18.     <meta http-equiv="description" content="This is my page">  
  19.     <!-- 
  20.     <link rel="stylesheet" type="text/css" href="styles.css"> 
  21.     -->  
  22.   
  23.   </head>  
  24.     
  25.   <body>  
  26.   <form action="jasperTest!getHtml.action" method="post">  
  27.     <input type="submit" value="生成图表">  
  28.   </form>  
  29.     
  30.   <table border="0" cellpadding="0" cellspacing="0" align="left">  
  31.             <tr>  
  32.                 <td align="center"  colspan=2>  
  33.                     <font size="3">${vpnbuffer}</font>  
  34.                 </td>  
  35.             </tr>  
  36.         </tr>  
  37.       </c:if>           
  38.         </table>  
  39.   </body>  
  40. </html>  


WEB.XML

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app version="2.5"   
  3.     xmlns="http://java.sun.com/xml/ns/javaee"   
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
  5.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
  6.     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
  7.   <display-name>Struts2Project</display-name>     
  8.     
  9.     <filter>  
  10.         <filter-name>struts2</filter-name>  
  11.         <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>  
  12.     </filter>  
  13.   
  14.     <filter-mapping>  
  15.         <filter-name>struts2</filter-name>  
  16.         <url-pattern>*.action</url-pattern>  
  17.     </filter-mapping>  
  18.       
  19. <span style="color:#ff0000;"> </span>   <servlet>  
  20.         <servlet-name>ImageServlet</servlet-name>  
  21.         <servlet-class>net.sf.jasperreports.j2ee.servlets.ImageServlet</servlet-class>  
  22.    </servlet>  
  23.      
  24.     <servlet-mapping>  
  25.   
  26.   
  27.     <servlet-name>ImageServlet</servlet-name>  
  28.   
  29.     <url-pattern>/image</url-pattern>  
  30.   
  31.   </servlet-mapping>  
  32.   
  33.       
  34. </web-app>  

4.效果图

 

 Ireport+jfreechart+Jasperreport开发图表

 

 

 

 

 

5.生成的HTML

 

<a name="JR_PAGE_ANCHOR_0_1"></a>

<table style="width: 800px; border-collapse: collapse; empty-cells: show" cellpadding="0" cellspacing="0" border="0" bgcolor="white">

<tr>

  <td style="width: 20px; height: 1px;"></td>

  <td style="width: 760px; height: 1px;"></td>

  <td style="width: 20px; height: 1px;"></td>

</tr>

<tr valign="top">

  <td colspan="3" style="width: 800px; height: 20px;"></td>

</tr>

<tr valign="top">

  <td style="width: 20px; height: 217px;"></td>

  <td><img src="image?image=img_0_0_0" style="height: 217px" usemap="#map_0_0_0" alt="" border="0" title="hyperLink!getHtml.action"/>

<map name="map_0_0_0">

  <area shape="poly" coords="371,33,380,33,380,102,380,102" href="hyperLink!getHtml.action?province=HKG"/>

  <area shape="poly" coords="363,35,371,33,380,102,380,102" href="hyperLink!getHtml.action?province=HEB"/>

  <area shape="poly" coords="324,61,332,52,341,44,352,38,363,35,380,102,380,102" href="hyperLink!getHtml.action?province=JSU"/>

  <area shape="poly" coords="316,76,324,61,380,102,380,102" href="hyperLink!getHtml.action?province=CHQ"/>

  <area shape="poly" coords="313,83,316,76,380,102,380,102" href="hyperLink!getHtml.action?province=HUB"/>

  <area shape="poly" coords="311,91,313,83,380,102,380,102" href="hyperLink!getHtml.action?province=GUD"/>

  <area shape="poly" coords="311,108,311,91,380,102,380,102" href="hyperLink!getHtml.action?province=HEN"/>

  <area shape="poly" coords="314,124,311,108,380,102,380,102" href="hyperLink!getHtml.action?province=GAN"/>

  <area shape="poly" coords="321,138,314,124,380,102,380,102" href="hyperLink!getHtml.action?province=BEJ"/>

  <area shape="poly" coords="326,145,321,138,380,102,380,102" href="hyperLink!getHtml.action?province=GXI"/>

  <area shape="poly" coords="332,151,326,145,380,102,380,102" href="hyperLink!getHtml.action?province=GUI"/>

  <area shape="poly" coords="380,33,391,34,402,36,412,41,421,47,430,54,436,63,442,73,446,83,448,95,448,106,447,117,443,127,438,137,432,146,424,154,415,161,404,166,393,169,382,170,371,170,361,168,350,164,340,158,332,151,380,102,380,102" href="hyperLink!getHtml.action?province=JUC"/>

  <area shape="default" coords="0,0,760,217" nohref="nohref" title="hyperLink!getHtml.action"/>

</map>

</td>

  <td style="width: 20px; height: 217px;"></td>

</tr>

<tr valign="top">

  <td style="width: 20px; height: 343px;"></td>

  <td><img src="image?image=img_0_0_1" style="height: 343px" usemap="#map_0_0_1" alt="" border="0"/>

<map name="map_0_0_1">

  <area shape="rect" coords="587,264,622,270" href="hyperLink!getHtml.action?province=HKG"/>

  <area shape="rect" coords="540,264,575,270" href="hyperLink!getHtml.action?province=HEB"/>

  <area shape="rect" coords="493,232,528,270" href="hyperLink!getHtml.action?province=JSU"/>

  <area shape="rect" coords="446,258,481,270" href="hyperLink!getHtml.action?province=CHQ"/>

  <area shape="rect" coords="399,264,434,270" href="hyperLink!getHtml.action?province=HUB"/>

  <area shape="rect" coords="353,264,388,270" href="hyperLink!getHtml.action?province=GUD"/>

  <area shape="rect" coords="306,258,341,270" href="hyperLink!getHtml.action?province=HEN"/>

  <area shape="rect" coords="259,258,294,270" href="hyperLink!getHtml.action?province=GAN"/>

  <area shape="rect" coords="212,258,247,270" href="hyperLink!getHtml.action?province=BEJ"/>

  <area shape="rect" coords="165,264,200,270" href="hyperLink!getHtml.action?province=GXI"/>

  <area shape="rect" coords="118,264,153,270" href="hyperLink!getHtml.action?province=GUI"/>

  <area shape="rect" coords="71,61,106,270" href="hyperLink!getHtml.action?province=JUC"/>

</map>

</td>

  <td style="width: 20px; height: 343px;"></td>

</tr>

<tr valign="top">

  <td colspan="3" style="width: 800px; height: 20px;"></td>

</tr>

</table>