1. 程式人生 > >jasperReports 通過java匯出各種格式報表,及javaweb專案整合顯示各種報表

jasperReports 通過java匯出各種格式報表,及javaweb專案整合顯示各種報表

注意:編寫此專案時,請先手動編寫**.jrxml  或者用IReport生成**.jrxml**.jasper

注:java匯出報表與web專案顯示報表方法其實是相同的,只不過有一句程式碼不同,如下

 html.setParameter(JRHtmlExporterParameter.OUTPUT_FILE_NAME,"C:/Users/Administrator/Desktop/ireport/report1.html");//生成檔案
            //html.setParameter(JRHtmlExporterParameter.OUTPUT_WRITER,response.getWriter()); // web頁面顯示


maven依賴

<!-- iReport JasperReports -->  
<dependency>  
    <groupId>net.sf.jasperreports</groupId>  
    <artifactId>jasperreports</artifactId>  
    <version>5.6.0</version>  
</dependency>  
<dependency>  
    <groupId>org.codehaus.groovy</groupId>  
    <artifactId>groovy-all</artifactId>  
    <version>2.2.2</version>  
</dependency>  


通過java程式碼生成各種格式報表檔案

JDBC檔案

package com.hlzt.test;

import java.sql.Connection;  
import java.sql.DriverManager;  
import java.sql.ResultSet;  
import java.sql.Statement;  
  
public class JDBC {  
    public static String driver="com.mysql.jdbc.Driver";  
    public static String url="jdbc:mysql://localhost:3306/senyuan1";  
    public static String user="root";  
    public static String pwd="123456";  
    public static Connection conn=getConnection();  
    public static Statement statement=getStatement();  
  
    private static Connection getConnection(){  
        if(conn==null){  
            try{  
                 Class.forName(driver);  
                 conn=DriverManager.getConnection(url,user,pwd);  
            }catch(Exception e){  
                e.printStackTrace();  
            }  
        }  
        return conn;  
    }  
    private static Statement getStatement(){  
        if(statement==null){  
            try{  
                statement=conn.createStatement();  
            }catch(Exception e){  
                e.printStackTrace();  
            }  
        }  
        return statement;  
    }  
    public static ResultSet getResultSet(String sql){  
        ResultSet rs=null;  
        try{  
            rs=statement.executeQuery(sql);  
        }catch(Exception e){  
            e.printStackTrace();  
        }  
        return rs;  
    }  
    public static void closeAll(ResultSet rs,Statement st,Connection cn){  
        try{  
            if(rs!=null){  
                rs.close();  
            }  
            if(st!=null){  
                st.close();  
            }  
            if(cn!=null){  
                cn.close();  
            }  
        }catch(Exception e){  
            e.printStackTrace();  
        }  
    }  
}  
生成 各種格式
package com.hlzt.test;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JasperCompileManager;
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;
@SuppressWarnings("deprecation")
public class TestReport  {

	public static void main(String[] args) {
		service();
	}
	//protected void service(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {\
	protected static void service(){
		try{
			//ServletContext context = this.getServletConfig().getServletContext();
			
			//JasperCompileManager 編譯管理器
			//JasperFillManager 填充管理器
			//JRXmlLoader xml載入器
			//JasperPrintManager 列印管理器
			//JasperExportManager 匯出管理器
			
			//JasperCompileManager.compileReportToFile(context.getRealPath("/reports/DbReport.jrxml"));//編譯jrxml檔案,生成jasper檔案
			
			Map map=new HashMap();//引數map
			map.put("userName", "admin");
			
			//生成jrprint檔案
			//JasperFillManager.fillReportToFile(context.getRealPath("/reports/DbReport.jasper"), map, JDBC.conn);
			
			
			File jasperFile=new File("C:/Users/Administrator/Desktop/ireport/report1.jasper");
			JasperReport jasperReport =(JasperReport)JRLoader.loadObject(jasperFile);
            JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, map,JDBC.conn);
            File file=new File("C:/Users/Administrator/Desktop/ireport/report1.html");
            //生成html
            JRHtmlExporter html = new JRHtmlExporter();
            html.setParameter(JRHtmlExporterParameter.JASPER_PRINT, jasperPrint);
            html.setParameter(JRHtmlExporterParameter.OUTPUT_FILE_NAME,"C:/Users/Administrator/Desktop/ireport/report1.html");//生成檔案
            //html.setParameter(JRHtmlExporterParameter.OUTPUT_WRITER,response.getWriter()); // web頁面顯示
            html.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN,Boolean.FALSE);
            html.setParameter(JRExporterParameter.CHARACTER_ENCODING, "utf-8");
            html.exportReport();
            //生成excel
            /*
            JRXlsExporter xls=new JRXlsExporter();
            */
            //生成pdf
            /*
            JRPdfExporter pdf = new JRPdfExporter(); 
			*/
		}catch(Exception e){
			e.printStackTrace();
		}
	}
}



與javaweb整合

本文用的是JasperReport最新版本6.0

web開發建議下載JasperReports library --> jasperreports-xxx-project 裡面包含demo以及api

專案結構:

jar包:新手可以把下載下來的所有jar包都放進去,熟練之後可以根據自己所需加入相關jar包

WebRoot下:新建reports資料夾,用來存放jrxml、jasper檔案;build.xml(放入進去之後會出現螞蟻圖示);


jrxml檔案程式碼,此程式碼是xml格式檔案,可以自己手寫,也可以安裝 iReport設計編譯成jasper檔案,為了入門下面純手寫

DbReport.jrxml:

  1. <spanstyle="font-size:14px;"><?xmlversion="1.0"encoding="UTF-8"?>
  2. <jasperReportxmlns="http://jasperreports.sourceforge.net/jasperreports"
  3.             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4.             xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports   
  5.                                 http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="DbReport">
  6.     <!-- jasperReport標籤中name="DbReport"需要對應外面檔名, $P{}為填充引數,$V{}為值 ,$F{}為查詢值或者為Jr資料-->
  7.     <!-- 頁面樣式標籤 --屬性:  
  8.         forecolor(前景色,就是文字)  
  9.         backcolor(背景色)  
  10.         hAlign(水平位置Center, Justified, Left, Right)   
  11.         vAlign(垂直位置Bottom, Middle, Top)   
  12.         border(邊框1Point, 2Point, 4Point, Dotted, None, Thin)   
  13.         borderColor(邊框顏色)   
  14.         fontName(字型)   
  15.         fontSize(字型大小)   
  16.         isBold,isItalic,IsUnderline,isStrikeThrough(粗體,斜體,下畫線,..)   
  17.         lineSpacing(1_1_2, Double, Single行間距)   
  18.         rotation(旋轉,Left, None, Right,轉的是90度)   
  19.         isStyledText(指示這個Element是否用Style,true,false)   
  20.         isDefault(說明這個樣式是否預設樣式)   
  21.     -->
  22.     <stylename="pageHeader"forecolor="#FFFFFF"backcolor="#333333"/>
  23.     <!-- 引數標籤 -->
  24.     <parametername="userName"class="java.lang.String"/>
  25.     <!-- 查詢語句標籤 -->
  26.     <queryString>
  27.         <![CDATA[ 
  28.             select id,user_name as name,email,qq from user where user_name=$P{userName} 
  29.         ]]>
  30.     </queryString>
  31.     <!-- 顯示欄位標籤 -->
  32.     <fieldname="id"class="java.lang.Integer"/>
  33.     <fieldname="name"class="java.lang.String"/>
  34.     <fieldname="email"class="java.lang.String"/>
  35.     <fieldname="qq"class="java.lang.String"/>
  36.     <pageHeader>
  37.         <bandheight="30">
  38.             <staticText>
  39.                 <reportElementstyle="pageHeader"x="0"y="5"width="55"height="15"/>
  40.                 <textElementtextAlignment="Center"/>
  41.                 <text><![CDATA[ID]]></text>
  42.             </staticText>
  43.             <staticText>
  44.                 <reportElementstyle="pageHeader"x="55"y="5"width="205"height="15"/>
  45.                 <text><![CDATA[Name]]></text>
  46.             </staticText>
  47.             <staticText>
  48.                 <reportElementstyle="pageHeader"x="160"y="5"width="255"height="15"/>
  49.                 <text><![CDATA[Email]]></text>
  50.             </staticText>
  51.             <staticText>
  52.                 <reportElementstyle="pageHeader"x="260"y="5"width="255"height="15"/>
  53.                 <text><![CDATA[QQ]]></text>
  54.             </staticText>
  55.         </band>
  56.     </pageHeader>
  57.     <!-- 顯示內容-->
  58.     <detail>
  59.         <bandheight="20">
  60.             <

    相關推薦

    jasperReports 通過java匯出各種格式報表javaweb專案整合顯示各種報表

    注意:編寫此專案時,請先手動編寫**.jrxml  或者用IReport生成**.jrxml或**.jasper 注:java匯出報表與web專案顯示報表方法其實是相同的,只不過有一句程式碼不同,如下 html.setParameter(JRHtmlExporte

    java常用資料格式轉化類似資料庫group by cube rollup

    java常用資料格式轉化,類似資料庫group by cube rollup單迴圈一條sql返回格式如:List<Map<String, List<Record>>> List<Record> operationList = operationService.

    java 匯出 excel 最佳實踐java 大檔案 excel 避免OOM(記憶體溢位) exce

    產品需求 產品經理需要匯出一個頁面的所有的資訊到 EXCEL 檔案。 需求分析 對於 excel 匯出,是一個很常見的需求。 最常見的解決方案就是使用 poi 直接同步匯出一個 excel 檔案。 客戶體驗 & 服務效能 客戶體驗 如果匯出的檔案比較大,比如幾十萬條資料,同步匯

    java 匯出 excel 最佳實踐java 大檔案 excel 避免OOM(記憶體溢位) excel 工具框架

    產品需求 產品經理需要匯出一個頁面的所有的資訊到 EXCEL 檔案。 需求分析 對於 excel 匯出,是一個很常見的需求。 最常見的解決方案就是使用 poi 直接同步匯出一個 excel 檔案。 客戶體驗 & 服務效能 客戶體驗 如果匯出的檔案比較大,比如幾十萬條資料,同步匯

    java 匯出csv格式(支援list的實體類)

             做的網頁專案,要匯出pdf使用itext工具,要是excel就使用jxl的jar包,匯出csv格式的話,就可以使用如下工具類,參考的博主是http://blog.csdn.net/xuxu198899223/article/details/38079885

    java 匯出excel格式

                            jxl.write.N

    C# Aspose.Cells匯出xlsx格式Excel開啟檔案報“Excel 已完成檔案級驗證和修復。此工作簿的某些部分可能已被修復或丟棄”

    報錯資訊: 最近開啟下載的 Excel,會報如下錯誤。(xls 格式不受影響) 解決方案: 下載程式碼(紅色為新添程式碼) public void download() { string fileName = "456.zip";//客戶端儲存的檔名 string f

    通過java實現解壓ziprar的程式碼

    package com.zuidaima.main; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.i

    各種格式flvavimp4等的檔案轉碼成MP4(無音訊)

    /* * test14.cpp * * 將各種格式flv,mp4的檔案,轉碼成MP4 */ #include <string.h> #include <math.h> #include "test06.h" #defi

    Java匯出Pdf格式表單

    # 前言   作為開發人員,工作中難免會遇到複雜表單的匯出,接下來介紹一種通過Java利用模板便捷匯出Pdf表單的方式 # 模擬需求   **需求:**按照下面格式匯出**pdf格式**的學生成績單 ![](https://img2020.cnblogs.com/blog/903643/202011

    java分布式事務解決方案

    ted 即使 線下 提升 nts 20px lan term 不能 1、什麽是分布式事務 分布式事務就是指事務的參與者、支持事務的服務器、資源服務器以及事務管理器分別位於不同的分布式系統的不同節點之上。以上是百度百科的解釋,簡單的說,就是一次大的操作由不同的小操作組成,這些

    解決方案:Java+selenium定位元素後sendKeys()輸入的內容顯示不完整

    一、執行環境:Java + selenium + chrome 二、問題描述: 使用XPath定位到元素後,使用sendKeys()輸入內容,在輸入框顯示出來的內容不完整,也就是與所輸入內容不一致。比如sendKeys()輸入的是18611372039,輸入後,只顯示部分數字,18611。

    WINDOWS解決升級npm依賴包的bat檔案將檔案儲存為bat格式字尾放node專案目錄執行

    @echo off & npm outdated --parseable --depth=0 >up.txt & for /f “delims=^” %%i in (up.txt) do ( for /f “delims=:” %%i in ("%%~ni") do (

    Java ArrayList 不為人知的陷阱add(int index, E element)和set(int index, E element)兩個方法的說明

    一般使用List集合,估計都是使用這個ArrayList,一般呢也就是簡單遍歷資料和儲存資料。 很少使用到add(int index, E element)和set(int index, E eleme

    Android訪問網路系列之--服務端返回XML或JSON格式資料Android 進行解析並顯示

    例子說明:使用者通過訪問web資源的最新電影資訊,伺服器端生成XML或JSON格式資料,返回Android客戶端進行顯示。 此案例開發需要兩個方面 WEB開發和android開發. 一.web開發相對比較簡單,只是模擬一下 相關程式碼如下: 1.實體Bean package ygc.yxb.domain

    *** 競賽中的各種低階錯誤程式設計常見錯誤小結 *** 歡迎童鞋們跟帖

    編寫程式碼常見錯誤: 1.遞迴時隱藏的修改了全域性變數例如點分治重心   →每次複製一遍  2.測試資料時未將空間開到題目要求,隱藏的空間倍數關係例如無向圖2倍  →RE  3.除數是個減法式子  

    java多執行緒小結解決應用掛死的問題

    JAVA多執行緒方面的知識,在此總結一下 1、在Java程式中,JVM負責執行緒的排程。執行緒排程是指按照特定的機制為多個執行緒分配CPU的使用權。 排程的模式有兩種:分時排程和搶佔式排程。分時排程是所有執行緒輪流獲得CPU使用權,並平均分配每個執行緒佔用CPU的時間;搶佔

    MP4檔案格式解析MP4檔案的分割演算法

    MP4檔案格式的解析,以及MP4檔案的分割演算法   mp4應該算是一種比較複雜的媒體格式了,起源於QuickTime。以前研究的時候就花了一番的功夫,尤其是如何把它完美的融入到視訊點播應用中,更是費盡了心思,主要問題是處理mp4檔案龐大的“媒體頭”。當然,流媒體點播也可以

    使用程式匯出建表語句以Insert語句形式匯出資料

    <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script><script type="text/

    Java-IDEA&SVN獨立(傳統)專案整合啟動-包含Java:非法字元 /65279 錯誤處理

    SVN 專案檢出    輸入SVN地址,需要驗證身份的,需要填寫使用者和密碼 , 這裡已經登陸 選中,檢出  檢出成功   IDEA 準備工作