1. 程式人生 > >Jasperreports6.3.1+Jaspersoft studio6.3.1進行報表開發實戰教程(二)-報表原理簡述

Jasperreports6.3.1+Jaspersoft studio6.3.1進行報表開發實戰教程(二)-報表原理簡述

報表生成流程

上章做了許多的準備工作,現在該說明用Jasperreport生成報表的工作流程了。
這裡寫圖片描述
1. JRXML:報表填充模板,本質是一個XML.
2. Jasper:由JRXML模板編譯生成的二進位制檔案,用於程式碼填充資料。
3. Jrprint:當用資料填充完Jasper後生成的檔案,用於輸出報表。
4. Exporter:決定要輸出的報表為何種格式,報表輸出的管理類。
5. Jasperreport可以輸出多種格式的報表檔案,常見的有Html,PDF,xls等

模板生成:JRXML

模板生成我們用Jaspersoft studio6.3.1進行視覺化編寫,這個軟體代替了以前的IReport進行Jasperreport的模板生成。上一章我們已經安裝好這個軟體,現在將它開啟。
這裡寫圖片描述


有沒發現跟Eclipse很像,沒錯這是基於Eclipse開發的開源軟體,熟悉Eclipse的同學相信很快上手。

新建一個報表模板

這裡寫圖片描述

選擇一個頁面佈局的模板,這裡選了一個空的A4紙大小的模板。
這裡寫圖片描述

點選Next,命名模板。
這裡寫圖片描述

點選Next,出現一個建立資料來源的選項,在報表模板設計中,資料來源可以是資料庫,也可以是一個實體類集合(javaBean)。在這裡我們點選New選擇一個空的資料庫,現階段我們實現簡單的功能還不用用到資料來源,後面會詳細介紹如何連線到資料庫與實體類集合。
這裡寫圖片描述
對資料來源進行命名,點選Finish完成。
這裡寫圖片描述
回到原來視窗,點選Finish,模板建立完畢.


這裡寫圖片描述

完成之後,可以看到JRXML的結構圖,工具欄與Eclipse開發Java程式一致
這裡寫圖片描述

首先觀察模板的Outline,有助於我們瞭解Jrxml設計的要素
這裡寫圖片描述

  1. Styles:可以引用的佈局風格
  2. Parameters:報表的引數,可由外部傳入資料填充。
  3. Fields:域、欄位,由上面關聯的資料庫或實體類所產生。
  4. Sort Fields:對欄位進行排序篩選後的欄位。
  5. Variables:變數,可以建立變數來進行一些數學計算。
  6. Scriptlets:報表模板實質是一個標籤語言,故也可以使用指令碼語言。
  7. 文件結構區:
    • Title:標題是首先看到的區域,它只被建立一次,可被列印在單獨的頁面上。標題不可能超過報表的設計高度(不包括頂底部邊距)。
    • Page Header:頁首區域,高度一般不會在設計過程中發生改變,除非插入可調整大小的元件(如文字)。頁首出現在所有列印介面設定好的區域,如標題和摘要列印在另一個單獨的頁面則不會包括頁首區域。
    • Column Header:表頭被列印在第一個細節列表的開始位置,通常作為列表會被插入在這個區域。
    • Detail:一般用於顯示錶格,可以包含多個表格。
    • Column Footer:表尾區域出現在第一列的末尾,它的尺寸在執行時不可調整大小。
    • Page Footer:頁尾,出現在有頁首的頁面,在執行時不可改變大小。
    • Last Page Footer:如果你想讓最後一頁頁尾不同於其他的頁尾,就可以使用特殊的最後一頁頁尾樂隊。如果區域高度為0會被完全忽略了,常用於最後一頁。
    • Summary:摘要區域允許你插入欄位總數,方法,或者任何想在報告中包括的資訊。
    • No Data:無資料。
    • Background:背景使您能夠建立水印和類似的效果,如一個框架
      在整個頁面。它可以有一個最大高度等於頁面高度。

檢視JRXML原始碼
點選頁面下方Desing旁邊的Source可以看到JRXML的原始碼,從中可以看到原始碼就是由標籤語言組成,一個個標籤構成了模板的各個元素,可以從原始碼裡對模板進行更加細緻的設計。

<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.3.1.final using JasperReports Library version 6.3.1  -->
<!-- 2017-02-21T19:13:07 -->
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="JasperSample" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="a2d74768-b0f9-4388-a9ab-d79179e0928f">
    <property 
//資料來源的設定
name="com.jaspersoft.studio.data.defaultdataadapter" value="MyAdapter"/>
//如果是資料庫,則可以設定查詢語句
    <queryString>
        <![CDATA[]]>
    </queryString>
    <background>
        <band splitType="Stretch"/>
    </background>
    <title>
        <band height="79" splitType="Stretch"/>
    </title>
    <pageHeader>
        <band height="35" splitType="Stretch"/>
    </pageHeader>
    <columnHeader>
        <band height="61" splitType="Stretch"/>
    </columnHeader>
    <detail>
        <band height="125" splitType="Stretch"/>
    </detail>
    <columnFooter>
        <band height="45" splitType="Stretch"/>
    </columnFooter>
    <pageFooter>
        <band height="54" splitType="Stretch"/>
    </pageFooter>
    <summary>
        <band height="42" splitType="Stretch"/>
    </summary>
</jasperReport>