Jasperreports6.3.1+Jaspersoft studio6.3.1進行報表開發實戰教程(二)-報表原理簡述
阿新 • • 發佈:2019-02-17
報表生成流程
上章做了許多的準備工作,現在該說明用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設計的要素
- Styles:可以引用的佈局風格
- Parameters:報表的引數,可由外部傳入資料填充。
- Fields:域、欄位,由上面關聯的資料庫或實體類所產生。
- Sort Fields:對欄位進行排序篩選後的欄位。
- Variables:變數,可以建立變數來進行一些數學計算。
- Scriptlets:報表模板實質是一個標籤語言,故也可以使用指令碼語言。
- 文件結構區:
- 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>