天天看點

Ireport+jfreechart+Jasperreport開發圖表http://wenku.baidu.com/view/78e0ed74a417866fb84a8eca.html 1.Ireport生成圖表 2.關于撰取 3.Jasper導出代碼部分 4.效果圖 5.生成的HTML

下載下傳Ireport3.74

1、 

檔案-建立

2、 

選擇Blank A4 、—》 lannch Report Wizard

3、 

設定報表名稱,生成完報表的存放位置,選擇下一步

4、 

建立資料源new

5、選擇Database JDBC connection

注: 将以下紅色框内容按情況填寫正确。

注:由于ireport隻提供了mysql的dirver,如用oracle資料庫需先将驅動jar包導入ireport。

導入方式:工具->選項->CLASSPATH把相關jar包導入。

6、 輸入SQL語句

SQL是報表要查詢的資料下一步。

注:這塊沒有給SQL傳入參數,傳參方法請參考報表生成PPT。

7、 把相應查詢出來報表要用到的File添加進去,下一步->完成。

8、 以下band隻留Summary

Band,其他band滑鼠右鍵Delete Band并且在Summary

Band中添加報表。

注:在Detail1中添加報表容易産生重複報表。

9、 将chart直接拖入

Summary Band區域,選擇報表下一步。

10、添加需要統計的資料組到第一個對話框,對應組的值放入第二個對話框。選擇相應的Field。

注:如沒出來定義報表的時候選擇的字段需要點選報表Edit Query把相應的sql對應的字read到Fields裡面。

11、增加類别

12、增加柱圖顯示數量

13、OK圖表生成了。Preview檢視下效果吧。後續編譯生成.jasper檔案放入工程中。

注:其中HyperLink target與HyperLinkType都是需要設定參數,HyperLink

Referece Expression

是撰取的url附帶參數可以實作分類撰取。

需要配置一個servlet在web.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:

package com.xin.struts2;  

import java.io.File;  

import java.sql.Connection;  

import java.sql.DriverManager;  

import java.sql.SQLException;  

import java.util.Date;  

import java.util.HashMap;  

import java.util.Map;  

import javax.servlet.http.HttpServletRequest;  

import org.apache.struts2.ServletActionContext;  

import org.apache.struts2.convention.annotation.Action;  

import org.apache.struts2.convention.annotation.Result;  

import com.opensymphony.xwork2.ActionSupport;  

@Action(value = "jasperTest",results={@Result(name="jasper",location="/jasperTest.jsp")})  

public class JasperTestAction extends ActionSupport{  

    private StringBuffer vpnbuffer = null;  

    public StringBuffer getVpnbuffer() {  

        return vpnbuffer;  

    }  

    public void setVpnbuffer(StringBuffer vpnbuffer) {  

        this.vpnbuffer = vpnbuffer;  

    private static final String URL = "xxxxxxxxxxxxxxxxxxx";  

    public String getHtml(){  

        Connection conn = getConn();  

        HttpServletRequest request = ServletActionContext.getRequest();  

        Map<String,String> parameters = new HashMap<String,String>();  

        parameters.put("title", "xxxxxxx");  

        parameters.put("title2", "xxxxxx");  

        vpnbuffer = new StringBuffer();  

        File reportFile = new File(ServletActionContext.getServletContext().getRealPath(  

                File.separator + "report" + File.separator + "report1.jasper"));  

        try {  

            ChartReportUtil.genAndExpChart(vpnbuffer, conn, request, reportFile, parameters);  

        } catch (Exception e) {  

            e.printStackTrace();  

        }  

            System.out.println("sbuffer"+vpnbuffer);  

        return "jasper";  

    private static Connection getConn(){  

        Connection conn = null;  

            Class.forName("oracle.jdbc.driver.OracleDriver");  

        } catch (ClassNotFoundException e) {  

            conn = DriverManager.getConnection(URL,"xxxxx","xxxxxx");  

        } catch (SQLException e) {  

        return conn;  

    public static void main(String[] args) {  

        System.out.println(new Date().toGMTString());  

}  

util:

import java.text.SimpleDateFormat;  

import java.util.Calendar;  

import net.sf.jasperreports.engine.JRException;  

import net.sf.jasperreports.engine.JRExporterParameter;  

import net.sf.jasperreports.engine.JRRuntimeException;  

import net.sf.jasperreports.engine.JasperFillManager;  

import net.sf.jasperreports.engine.JasperPrint;  

import net.sf.jasperreports.engine.JasperReport;  

import net.sf.jasperreports.engine.export.JRHtmlExporter;  

import net.sf.jasperreports.engine.export.JRHtmlExporterParameter;  

import net.sf.jasperreports.engine.util.JRLoader;  

import net.sf.jasperreports.j2ee.servlets.ImageServlet;  

/** 

 * 圖表工具類 

 * @author xxxxx 

 * 

 */  

@SuppressWarnings("unchecked")  

public class ChartReportUtil {  

    //報表圖檔生成路徑  

    private static final String REPORT_IMG_DIR = "compReportImg";  

    /** 

     * 生成并導出圖形報表 

     * @param buffer output HTML 

     * @param conn  DB connection used for query 

     * @param request  

     * @param reportFile report JASPER file 

     * @param parameters Used for the parameters of the query  

     * @throws JRException  

     */  

    public static void genAndExpChart(StringBuffer sbuffer,Connection conn,HttpServletRequest request  

            ,File reportFile,Map<String,String> parameters) throws Exception{  

            if(!reportFile.exists()){ //Check file exists  

                throw new JRRuntimeException("jasper file is not found!");  

             }  

             if(null == sbuffer){ //Check StringBuffer init  

                 throw new RuntimeException("StringBuffer is not init");  

             JRHtmlExporter exporter = new JRHtmlExporter();  

             JasperReport jasperReport = (JasperReport) JRLoader.loadObject(reportFile.getPath());  

             JasperPrint jasperPrint = null;  

             jasperPrint = JasperFillManager.fillReport(jasperReport,parameters, conn);  

             exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);  

             exporter.setParameter(JRExporterParameter.OUTPUT_STRING_BUFFER,sbuffer);  

             exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN,Boolean.FALSE);  

             exporter.setParameter(JRHtmlExporterParameter.HTML_HEADER, "");  

             exporter.setParameter(JRHtmlExporterParameter.BETWEEN_PAGES_HTML, "");  

             request.getSession().setAttribute(ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, jasperPrint);  

             String imgServDirUrl = REPORT_IMG_DIR + File.separator + getFileNameNoEx(reportFile.getName());//構造報表存放子目錄,以期解決一次請求傳回多個圖形報表重疊現象  

             File imgRealDir= new File(request.getRealPath(File.separator) + imgServDirUrl);  

             if(!imgRealDir.exists()) {  

               imgRealDir.mkdirs();  

             //重設JRHtmlExporterParameter.IMAGES_URI  

             exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, request.getContextPath() +"/"+imgServDirUrl+ "/");  

             exporter.setParameter(JRHtmlExporterParameter.IMAGES_DIR, imgRealDir);  

             exporter.setParameter(JRHtmlExporterParameter.IS_OUTPUT_IMAGES_TO_DIR, Boolean.TRUE);  

             exporter.setParameter(JRHtmlExporterParameter.HTML_FOOTER, "");  

             exporter.exportReport();  

        }finally{  

            if(conn!=null){  

                conn.close();  

            }  

JSP:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  

<%  

String path = request.getContextPath();  

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  

%>  

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  

<html>  

  <head>  

    <base href="<%=basePath%>">  

    <title>My JSP 'login.jsp' starting page</title>  

    <meta http-equiv="pragma" content="no-cache">  

    <meta http-equiv="cache-control" content="no-cache">  

    <meta http-equiv="expires" content="0">      

    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  

    <meta http-equiv="description" content="This is my page">  

    <!-- 

    <link rel="stylesheet" type="text/css" href="styles.css"> 

    -->  

  </head>  

  <body>  

  <form action="jasperTest!getHtml.action" method="post">  

    <input type="submit" value="生成圖表">  

  </form>  

  <table border="0" cellpadding="0" cellspacing="0" align="left">  

            <tr>  

                <td align="center"  colspan=2>  

                    <font size="3">${vpnbuffer}</font>  

                </td>  

            </tr>  

        </tr>  

      </c:if>           

        </table>  

  </body>  

</html>  

WEB.XML

<?xml version="1.0" encoding="UTF-8"?>  

<web-app version="2.5"   

    xmlns="http://java.sun.com/xml/ns/javaee"   

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   

    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   

    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  

  <display-name>Struts2Project</display-name>     

    <filter>  

        <filter-name>struts2</filter-name>  

        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>  

    </filter>  

    <filter-mapping>  

        <url-pattern>*.action</url-pattern>  

    </filter-mapping>  

<span style="color:#ff0000;"> </span>   <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>  

</web-app>  

<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>

</tr>

<tr valign="top">

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

  <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: 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"/>

</table>