6.1 屬性,佈局
我們以示例數據庫爲數據源,sql選擇查詢數據集爲例,新建報表birt_table,空白模板數據集customer:
select CLASSICMODELS.CUSTOMERS.CUSTOMERNAME,CLASSICMODELS.CUSTOMERS.CUSTOMERNUMBER,CLASSICMODELS.CUSTOMERS.CONTACTLASTNAME,CLASSICMODELS.CUSTOMERS.CONTACTFIRSTNAME,CLASSICMODELS.CUSTOMERS.PHONE,CLASSICMODELS.CUSTOMERS.ADDRESSLINE1,CLASSICMODELS.CUSTOMERS.ADDRESSLINE2,CLASSICMODELS.CUSTOMERS.CITY,CLASSICMODELS.CUSTOMERS.STATE,CLASSICMODELS.CUSTOMERS.POSTALCODE,CLASSICMODELS.CUSTOMERS.COUNTRY,CLASSICMODELS.CUSTOMERS.SALESREPEMPLOYEENUMBER,CLASSICMODELS.CUSTOMERS.CREDITLIMIT
from CLASSICMODELS.CUSTOMERS
我們在報表編輯區插入一個1列2行的網格,在第2行插入一個1行4列的表,直接從畫板中拖過來或者用右鍵菜單的方式都行:
把customer表中的CUSTOMERNAME,COUNTRY,PHONE,ADDRESSLINE1屬性列插入表中:
預覽結果如下
前面通過預覽看到,我們製作的報表已經正確展示了我們需要的數據,可是外觀上卻不太美觀。接下來我們對報表的外觀格式進行一定的調整,主要包含以下幾個方面:
� 表頭改爲中文,並設置背景色,字體顏色
� 設置數據對齊
� 給表格加上邊框線
� 添加報表標題
點擊“佈局”標籤,返回報表設計窗口。
雙擊表格元素的頁眉行表頭標題所在的單元格,逐一將表頭改爲中文:客戶名稱,國家,電話,地址。
選中表格元素的第一行,即頁眉行。(注:先選中表格元素,然後再選中表格的第一行)。
在下面的屬性窗口中,選擇常規標籤,設置該行的背景色,居中對齊,字體顏色,以及字體加粗。
選中表格元素,在下面的屬性窗口的常規標籤中,點擊居中對齊按鈕。
選中表格中任意單元格,拖拽鼠標直至覆蓋表格所有的單元格。(注:一定要首先選中表格的一個單元格,然後進行鼠標拖拽,您可以在下面的屬性窗口中查看您當前選中的是什麼元素)
在屬性窗口中選擇邊框標籤頁,設置邊框寬度爲 1px,並給單元格四周都加上邊框線。
接下來我們給報表添加一個標題,您可以使用標籤、文本或者數據元素來顯示報表的標題。這裏我們使用標籤來顯示報表的標題。選擇報表設計頁面中網格的第一個單元格,往其中添加一個標籤元素,輸入文本“客戶
信息表”作爲報表的標題,並設置該標籤文本的字體,顏色及大小。您可以根據需要還可以在報表標題中加入圖片等元素,美化報表外觀。
設計報表時,您可以通過設置報表內容的格式來使得其外觀與格式更加美觀並符合要求。比如,您可以突出顯示報表中特定的數據,更改日期、數據與貨幣的顯示格式,調整報表元素之間的間隔,設置數據的條件格式。
BIRT報表爲您定製報表中各元素的外觀提供了許多選項,通過設置元素的各種格式屬性,您可以更改這些元素的對齊方式、顏色、字體、尺寸大小等,您還可以添加元素的背景色,邊框等。
如果您對 CSS 比較熟悉,您還可以使用CSS 來設置報表的外觀格式,許多報表元素的格式屬性與CSS 中的格式屬性是一致的。
您可以通過以下視圖來修改元素的格式屬性——屬性編輯器窗口。該視圖將常用的屬性按功能分類組織在一起,其中的屬性選項根據報表元素的不同而不同:
在常規,邊框,頁邊距,分頁符,可視性,目錄,書籤,註釋,用戶屬性,命名錶達式,事件處理程序中設置的屬性,都會反映到高級選項卡中:
修改高級選項卡里的屬性值,效果和修改其他選項卡對應的值是一樣的。
您可以修改以下設置來修改數據的顯示格式。
� 數字,文本,日期與時間的格式
BIRT報表提供了許多常用的格式樣式來顯示數字,貨幣與日期。如果您不設置數據的格式,則BIRT報表將直接顯示數據原來在數據源中的格式。如果您不使用BIRT報表自帶的格式,那麼您還可以定義自己的格式。
� 字體,大小與顏色
在設置字體之後,當報表用戶運行瀏覽該報表時,他將以您設置的字體來瀏覽報表,所以必須確保用戶的系統上已經安裝了您設置的字體。文本樣式:加粗,斜體,下劃線,刪除線文本對齊:左對齊,右對齊,居中,對齊
您僅可以對小數、浮點和整型數據設置數值格式。比如,您可以將整型數據顯示爲小數格式,使用科學記數法或加上貨幣符號。
注意:數值格式對字符串類型是無效的。
您可以使用文本元素或數據元素來顯示數值數據。如果您直接從數據集中將某一字段直接拖入報表設計區域,那麼BIRT報表設計器將會自動創建一個數據元素來顯示該字段的值。
格式化數據與格式化文本的方法是有所區別的,這會在後面小節中介紹。
設置數據元素中的數值數據格式
您可以在屬性編輯器窗口的“數值格式”中,設置數據元素中的數值格式。
格式類型 示例
常規數字 3000.00
貨幣 $3,000.00
固定 3000.00
百分比 300000.00%
科學計數 3.00E+03
您也可以使用自定義格式。比如您可以指定數值的小數位數,在數值前或後面添加字符。您需要使用特殊符號來構建格式範式,來自定義數值格式。BIRT報表支持符合JavaDecimalFormat 類定義的規範的數值格式。請查閱Java 文檔獲取該相關信息。下表給您顯示了一些自定義格式的例子。
格式範式 原始數值 格式化後數值
0000.00 12.5 0012.50
124.5 0124.50
1240.553 1240.55
#.000 100 100.000
100.25 100.250
100.2567 100.257
$#,### 2000.00 $2,000
20000.00 $20,000
ID# 15 ID15
BIRT報表支持您在文本元素中通過<VALUE-OF>標籤來顯示數據。而文本元素的數值您是不能像前面設置數據元素中的數值格式一樣,直接在屬性編輯器裏設置其格式。但是您可以通過<VALUE-OF>標籤的format 屬性來設置其數值格式,屬性值爲格式範式,且必須使用雙引號。
<VALUE-OF format="$#,###.00">row["orderTotal"]</VALUE-OF>
<VALUE-OF format="#.000">row["unitTotal"]</VALUE-OF>
您使用的格式範式必須要符合前面提到的Java 所定義的規範。
您可以根據用戶需求將日期時間以不同格式顯示,如長格式、短格式、中等格式等。如果報表運行所在的系統支持多語言地區,那麼日期數據則可以以不同區域的格式來顯示。您可以使用文本元素或數據元素來顯示日期時間數據。當您直接從數據集中將日期時間字段拖入報表設計中時,BIRT報表將自動創建一個數據元素來顯示該日期時間數據。格式化文本元素中的時間日期數據與格式化數據元素中的日期時間數據是不一樣的。
� 設置數據元素中的日期時間數據格式
您可以在報表設計中選中包含有日期時間數據的數據元素,然後在屬性編輯器的日期時間格式頁面中指定其格式。
您也可以自定義日期時間格式。比如您可以使用2 位數字顯示月份,2 位數字顯示年份,添加某州的第幾天等。同樣,您需要使用特殊符號來構建格式範式來自定義日期時間格式。BIRT報表支持Java SimpleDateFormat 類所定義的格式範式規範。請查詢Java 文檔獲取相關信息。
下表以日期數據 4/15/2005 爲例,給您展示了使用不同範式所得到的不同結果。
格式範式 |
結果 |
MM-dd-yy |
04-15-05 |
E,M/d/yyyy |
Fri,4/15/2005 |
EEEE,M/dd/yy |
Friday,4/15/05 |
MMM d |
Apr 15 |
MMMM |
April |
yyyy |
2005 |
W |
3 (一月中的第幾周) |
w |
14 (一年中的第幾周) |
D |
105 (一年中的第幾天) |
因爲自定義日期時間格式將會使日期時間永遠以指定的固定格式顯示,所以當您的報表僅使用同一區域設置來查看時,您可以使用自定義格式。比如您使用自定義格式MM-dd-yy,那麼日期January 10, 2006 將永遠顯示爲01-10-06,不管查看該報表時使用的是何種區域設置。而在某些區域設置下,01-10-06 則很可能被理解爲October 1, 2006。
同普通數據一樣,您也可以在文本元素中使用<VALUE-OF>標籤來顯示日期時間數據。在<VALUE-OF>標籤中,那您可以使用format 屬性來設置日期時間格式,下面是兩個例子。
<VALUE-OF format="MM-dd-yyyy">row["orderDate"]</VALUE-OF>
<VALUE-OF format="M/d/yy hh:mm:ss">new Date()</VALUE-OF>
Format 的屬性值必須爲格式範式,它必須要符合前面提到的Java 所定義的日期時間格式定義規範。
從數據源取回的字符串類型數據的格式經常會不一樣,甚至是混亂,比如姓名或名稱經常大小寫不作區分,或者電話號碼直接爲1234567890 格式。這時我們就可以設置字符串數據的格式。
您可以使用文本元素或數據元素來顯示字符串數據。當您直接從數據集中將字符串字段拖入報表設計中時,BIRT報表將自動創建一個數據元素來顯示該字符串。格式化文本元素中的時間日期數據與格式化數據元素中的日期時間數據是不一樣的
您可以在報表設計中選中包含有字符串的數據元素,然後在屬性編輯器的字符串格式頁面中設置其格式。
您可以選擇將字符串全部用大寫字母或者小寫字符來表示,或者使用特殊字符來自定義字符串格式。下表給您列出了這些特殊符號的含義:
符號 |
描述 |
@ |
字符佔位符。每一個@符號代表字符串中的一個字符。如果字符串的字符數比@符號的個數少,那麼字符串將會以空格補齊。佔位符的填充方向爲從右到左,除非在格式範式以感嘆號!開頭。 |
& |
與@一樣,同爲佔位符。唯一不同的是如果字符串的字符數比&個數少,則不會自動以空格補齊。 |
! |
指定佔位符的裝填方向從左到右 |
> |
將字符串轉爲大寫 |
< |
將字符串轉爲小寫 |
下表給您列出了一些格式範式,以及它們作用於原始數據的結果
格式範式 |
範例 |
結果 |
(@@@)@@@-@@@@ |
6175551007 |
(617)555-1007 |
5551007 |
( ) 555-1007 |
|
(&&&) &&&-&&&& |
6175551007 |
(617)555-1007 |
5551007 |
() 555-1007 |
|
!(@@@)@@@-@@@@ |
6175551007 |
(617)555-1007 |
5551007 |
(555) 100-7 |
|
!(&&&) &&&-&&&& |
6175551007 |
(617)555-1007 |
5551007 |
(555) 100-7 |
|
!(@@@)@@@-@@@@ + ext9 |
5551007 |
(555) 100-7+ ext 9 |
!(&&&) &&&-&&&& +ext 9 |
5551007 |
(555) 100-7 +ext 9 |
>&&&-&&&&&-&& |
D1234567xy |
D12-34567-XY |
<&&&-&&&&&-&& |
D1234567xy |
d12-34567-xy |
同普通數據一樣,您也可以在文本元素中使用<VALUE-OF>標籤來顯示字符串數據。
在<VALUE-OF>標籤中,那您可以使用format 屬性來設置字符串格式,下面是兩個例子
<VALUE-OF format="(@@@) @@@-@@@@">row["phone"]</VALUE-OF>
<VALUE-OF format=">">row["custName"]</VALUE-OF>
Format 的屬性值必須爲格式範式,它必須要符合前面提到的Java 所定義的字符串格式定義規範。
表,行,列,單元格,報表項各自的屬性視圖不相同。
表的屬性如下:
行的屬性如下:
列的屬性如下:
單元格的屬性如下:
報表項的屬性如下:
所以,在設置屬性的時候,一定要分清楚,是設置的行的屬性,還是單元格的屬性,或是報表項的屬性。給單元格加上邊框與給報表項加上邊框的效果是不同的,如下所示爲給報表項加上背景和邊框:
另外,在頁面上右擊,選擇佈局爲自動佈局,表格會隨頁面大小自動展開。
一個常見的用法是在報表中使用外部javascript,這個時候就可以用頁面的屬性中的資源選項,導入javascript文件,如圖導入了一個名爲test.js的外部javascript文件:
反映到xml中就是增加了如下一段:
<list-property name="includeScripts">
<property>test.js</property>
</list-property>
後文再詳細介紹腳本的書寫以及外部腳本的調用。