水晶报表 jar包版本过低_工具类学习-UReport报表设计器整合
dada-report報表整合UReport報表設計器工具
結合日常工作和學習實踐,針對傳統報表子站面臨的問題,嘗試借助UReport報表設計器解決
1.可在現有工程基礎上引入Ureport2報表設計器
Ureport報表設計器是一個基于WEB的在線報表設計器,其具有良好的界面設計和強大的報表設計功能,支持報表多種格式導出(分頁)、報表通用性設計等,Ureport2支持簡單、復雜報表的設計,能夠很好地嵌合實際業務需求,其報表設計可通過純sql或者是配置的方式實現,以此可針對不同的人員進行管理。
2.針對多租戶、復雜報表設計
Ureport2可在工程中自定義報表存儲器和數據源,在代碼邏輯層模擬實現多租戶概念(不同的租戶訪問不同的報表存儲器、數據源信息)
3.現存問題
a.學習成本
將UReport報表設計器整合到已有項目并非一件難事,只需要通過簡單的配置便可完成,主要的工作量在于后期報表的設計、維護,以及UReport2報表設計器的學習需要耗費一定的時間和精力,需要開發人員了解報表設計的流程、原理,掌握排查報表設計錯誤的方法,熟練應用。
b.與實際業務整合
現有報表子站中的存量報表數量較多,如果所有的報表都要重新進行設計、維護,將是一個巨大的工作量。
UReport2僅僅是一個報表設計器,如果要結合需求實現多租戶概念,相應需要額外對應的維護頁面與接口設計
針對大數據量數據處理還存在一定的問題,其中涉及緩存概念,有時候處理特大數據量的時候后臺報錯,考慮需要深入UReport源碼分析或者是相關配置調整;且其提供的圖形統計圖顯示相對EChart而言并不太友好。
從這段時間的學習來看Ureport是比較方便且功能強大的開源插件,其與實際業務的整合、數據的處理還需要時間的驗證,畢竟還需要考慮額外諸多因素,在后續的學習中會考慮進一步完善
以下簡單提供本人在畢設中使用Ureport的一些學習筆記參考,個人建議可借助網絡資源去結合學習會比較好理解:https://www.w3cschool.cn/ureport/
SSM框架整合UReport報表設計器
參考鏈接:
https://www.w3cschool.cn/ureport/
整合過程分析
1.在pom.xml文件中引入相關依賴
<dependency>完整pom.xml參考配置:
<project2.在web.xml文件中配置UReport的Servlet
<servlet>3.引入UReport相關的配置文件
有三種方式實現配置文件引入:根據實際工程搭建的情況靈活選擇引入的方式
方式1:直接在web.xml中加載ureport-console-context.xml文件(針對普通的Maven工程配置,沒有采用spring文件)
<listener>方式2:在已有的spring配置文件中導入數據
<import方式3:如果沒有spring配置文件,直接創建一個context.xml中
<?xml version="1.0" encoding="UTF-8"?>此處對已有的SSM項目整合做說明:
無論是以上哪種方式實現,必須保證在web.xml需要加載相應的spring配置文件,否則項目在啟動的時候就會報視圖解析失敗,沒有相應的designer
在整合啟動的過程中可能由于maven相關jar包沒有正常導入,導致ureport依賴的相關jar包非正常導入,項目啟動報錯(刪除maven倉庫的內容,重新導入jar包)
以下簡單對整合過程中可能遇到的問題做簡單的說明
問題1:指定屬性無法找到(是由于在整合的過程中Ureport報表設計器需要指定的屬性并沒有在自己搭建的工程中指定,因而報錯)
啟動的時候如果報找不到指定的屬性:則需要在屬性配置的時候需要不存在(未配置)的屬性(在applicationContext-dao.xml、springmvc.xml下加載了屬性文件,添加屬性忽略掉沒有定義的屬性查找),報錯內容如下所示
針對spring配置文件處理:
針對普通maven工程處理:
配置屬性說明:Ureport有自定義的配置屬性,這些配置屬性是與報表存儲、設計相關的,具體內容需要根據實際的業務需求去自行配置,如果不需要則在代碼邏輯層對業務流轉進行控制即可
問題2:404或指定designer設計器不存在
在整合的ssm中配置ureport出錯,通過鏈接訪問數據的時候無法找到指定的頁面,初步考慮路徑配置,之后查看web.xml配置,發現在之前的前端控制器配置中,默認攔截了所有的請求,因此在請求的時候直接被dada-report這個前端控制器攔截,但dada-report這個控制器下并沒有指定的ureport相關的內容存在,因此會報404訪問路徑錯誤或者是designer報表設計器不存在的問題,此處需要對dada-report攔截的內容做限制,參考前端控制器攔截(攔截說明、攔截順序、執行順序)
原始配置:
直接配置如下所示,但如果出現designer視圖不存在,考慮是相應的文件沒有加載進去,因為在springmvc.xml中加載了有關的ureport2配置文件,因此要在初始化加載spring容器的時候將對應的springmvl.xml配置文件進行加載,否則無法找到相應內容,出現如下所示錯誤
要么就設置Servlet默認啟動的時候加載配置文件
實際SSM整合說明如下:
依賴配置:添加ureport相關的依賴jar包
為了避免配置文件混亂,也避免改動原有ssm配置,此處單獨在resources目錄下創建一個文件夾ureport存放ureport-custom-context.xml配置文件以編輯相關的ureport配置,并在web.xml中配置相應的全局參數(必須在context-param中配置加載文件)
配置完成,啟動項目,訪問鏈接:http://localhost:8084/ureport/designer
Ureport報表設計器顯示如下:
可以適當了解web.xml各個參數配置的含義:
完成配置,根據W3CSchoool等相關教程完成業務和報表工具的整合,以下簡單根據教程完成業務流程簡單實現
https://www.w3cschool.cn/ureport/ureport-y4op2han.html
測試的時候如果出現按鈕點擊無反應,則可能是彈出式窗口被瀏覽器攔截,只需要允許彈出即可,或可直接通過url直接訪問
通用報表設計整合
無論是機構、還是平臺報表存儲器,此處操作的表字段都是統一的,因此此處做一個調整,設置通用的方法將重復的內容統一起來,用不同的字段標識進行劃分,由前臺頁面傳入數據限定相應的標準,不需要重復操作代碼
a.創建指定數據表結構(字段需保持一致)
存儲報表文件、數據源配置文件(概念上區分,實際內容基本一致)
機構相關存儲器:ureport_file、ureport_data_source_file、
平臺公共存儲器:ureport_backup、ureport_data_source_backup
保持數據字段相應一致,主要包括file_id(主鍵)、file_name(文件名稱)、file_content(文件內容)三個基本字段,具體其余字段的設計則根據實際工程需求進行擴展。
表字段:
b.創建通用的實體類UreportFileManager
UreportFileManager類作為通用的實體類,使得在dao層只需要指定需要操作的表名tableName便可實現對不同的數據表進行操作,UreportFileManager基本結構定義需要與相應數據表的屬性一一對應。
Model實體:
Mapper層查找參數設置:
c.通用mapper方法實現
為了實現mapper方法操作的通用性,引入UreportFileSearchParam類用于封裝操作參數,其主要包括操作表名tableName、操作實體ureportFileManager以及與報表文件數據庫實體相對應篩選參數。
UreportFileManagerMapper接口通過接收searchParam指定的參數組合,操作指定的報表文件存儲器,實現以參數配置去訪問不同的數據庫并與UReport報表引擎進行數據交互,從而間接減少代碼設計的冗余量,并便于報表存儲器的不限量擴展。針對報表的管理與權限的控制則考慮在同一個數據庫中劃分不同的區域用以區分不同的機構、不同的部門所訪問的存儲空間不同,在mapper層借助searchParam指定篩選條件,提供相應的接口供相應的Serivce層、存儲器Provider進行調用
對應mapper層配置:
對應mapper.xml:
<?xml version="1.0" encoding="UTF-8"?>對應狀態概念調整:
public_state:可理解為開發狀態(開發中0、已完結1),亦可理解為公開狀態(私有0、公開1)
visible_state:可見狀態:針對部分已完結的報表,但想對用戶隱藏(0.不可見 1.可見)
Ureport報表工具學習
報表設計器訪問路徑:http://localhost:8084/ureport/designer
http://host[:port][/context-path]/ureport/designer
1.報表存儲存儲目錄配置
a.默認的報表存儲目錄配置
默認情況下:在項目的WEB-INF目錄有會自動生成了一個名為“ureportfiles”目錄,這個目錄是UReport2提供的默認的報表文件存儲目錄,也就是說默認情況下,UReport將在項目的WEB-INF/ureportfiles目錄下存儲設計好的報表文件。
默認報表存儲目錄
如果項目在Eclipse的開發環境運行時,采用的是jetty(比如run-jetty-run插件),那么就可以在項目的WEB-INF目錄下發現一個名為“ureportfiles”目錄。
但如果采用tomcat運行項目,那么在WEB-INF目錄下就沒有一個名為“ureportfiles”目錄,原因是在Eclipse中運行tomcat,tomcat需要創建一個臨時的工作目錄(該目錄一般位于workspace.metadata.pluginsorg.eclipse.wst.server.coretmp0wtpwebapps下),所以采用tomcat運行項目,則需要到這個臨時的工作目錄下找到對應的項目,再到這個項目的WEB-INF目錄下找到對應的“ureportfiles”目錄
運行搭建好的項目,打開報表設計器,點擊工具欄的保存按鈕,彈出如下所示窗口:
完成數據保存,刷新工程目錄則可看到對應生成的數據信息
b.自定義報表存儲目錄配置
在項目對應配置文件(參考整合過程,此處ureport獨立的spring配置文件在resource/ureport/ureport-custom-context.xml),相應在其ureport目錄下創建一個ureport-custom.properties配置文件存放有關ureport配置的基本屬性
上面的Bean配置,實際上就是一個標準的
org.springframework.beans.factory.config.PropertyPlaceholderConfigurer類配置,通過配置PropertyPlaceholderConfigurer,可以實現加載Spring外部properties的作用,所以項目中已配置了PropertyPlaceholderConfigurer類,那么直接在這個類對應的properties文件中添加對應的UReport2屬性即可,而不需要額外配置config.properties文件
完成文件加載配置,在相應的配置文件中配置屬性即可:
表示在E盤根下名為ureportfiles的目錄中存儲報表文件,需要注意的是,這里指定特定目錄時,一定要保證這個目錄已存在,否則將不會被采用,比如上面的E盤下名為ureportfiles的目錄,就需要預先創建好。(指定文件目錄不存在,則提示如下)
c.自定義報表存儲器
UReport2默認提供的名為“服務器文件系統”的報表存儲機制,實際上是實現了UReport2提供的com.bstek.ureport.provider.report.ReportProvider接口,該接口源碼如下:
package實現了ReportProvider接口后,只需要將實現類配置到Spring中,讓其成為一個標準的Spring Bean,這樣UReport2就會檢測到它而將其加載。下面是UReport2默認提供的名為“服務器文件系統”的報表存儲器源碼:
package禁用系統提供的默認報表存儲器
如果想使用自定義的報表存儲器,同時又不想再使用系統默認提供的”服務器文件系統“的報表存儲器,那么只需要在相應的報表配置文件(舉例:config.properties)文件中添加一個名為ureport.disableFileProvider屬性,將其值設置成true即可。
通過實現ReportProvider接口,可以開發出其它類型的報表存儲器,比如開發一個新的報表存儲器將報表文件存儲到數據庫、FTP等。
參考鏈接:
存儲報表至fastdfs:
https://blog.csdn.net/qq_35170213/article/details/80290797
存儲報表至數據庫:
https://blog.csdn.net/qq_35170213/article/details/80290425
自定義報表存儲器(數據庫)
<1>創建存儲報表信息的數據表
考慮實際需求,此處分別定義了CustomProvider報表存儲器用于測試,可結合實際業務球球完成數據表設計,在基礎屬性的基礎上添加其他字段用于業務的邏輯擴展
基本設計:(僅供參考)
/** 建表 sql - 基本參考 */為契合業務需求,初步考慮數據表設計如下,具體的內容根據實際需求做調整
<2>dao層/Mapper實現方法(基本的增刪改查)
此處提供一個通用的接口模板,具體實現的邏輯則需要根據實際的業務需求去設計
例如整合報表平臺的時候需要考慮實際報表權限的問題,因此需要考慮根據當前用戶登錄的權限,所屬的機構等進行條件篩選
PS:由于報表存儲器的數據庫設計基本保持一致,由此可考慮創建一個通用的dao、service進行控制,只需要通過前端頁面調用接口傳入數據表名tableName即可控制要操作的存儲器,由此可間接實現多租戶報表管理的概念(不同的租戶可訪問不同的報表存儲器)
-- 此處為簡單配置簡單演示單表操作
@Mapper具體的mapper.xml文件則需要參考實際表設計完成相應配置,需要注意的是name、content這兩個屬性,這兩個屬性是報表設計的必要屬性,以下提供基本模板,實際內容參考實際需求進行調整
<?xml version="1.0" encoding="UTF-8" ?>報表內容存儲的類型:
Mysql數據庫中表字段設置為‘mediumblob’類型
在mapper配置的數據類型為‘BLOB’、‘LONGARBINARY’
兩種類型在數據庫中存儲的形式:
報表存儲器設計
基于springboot的參考
import基于SSM的設計參考
public測試問題分析
創建xxxProvider繼承ureport的ReportProvider方法,完成報表存儲相關的操作
測試:數據能夠正常保存,但是卻無法正常訪問
分析,在保存報表文件信息,或者是打開報表文件的時候請求接口,報錯。
理想結果:自動封裝相應存儲的數據信息
實際結果:只封裝了第一個定義的存儲器,隨后報如下錯誤
(查看數據庫mapper配置!!)
一開始考慮是多個報表存儲器沖突導致的問題,之后測試無論是啟用或禁用服務默認報表存儲器還是出現同樣的問題,數據庫訪問也沒有看見明顯的錯誤,隨后查閱代碼發現問題所在,由于一開始考慮機構報表存儲器和平臺備份報表存儲器是類似的,直接復制粘貼代碼,后期改動沒有注意到一些細節性的問題,設置斷點也無法找到明顯的錯誤點(點擊的時候加載就報錯,無法通過設置斷點查找出錯問題),仔細查看報錯信息,發現問題所在
可以看到保存信息顯示兩條sql語句查詢的結果不同,前者正常查找數據,而后者查找數據到“Parameters:”(參數沒有正常傳遞)則異常結束關閉數據庫連接,并沒有正常的返回,網上查閱輸出流格式沖突,具體原因并不明確,考慮是報表內容存儲格式問題,由mybatis逆向工程生成的mediumblob對應的是LONGVARBINARY,而網上參考是BLOB,修正后再次測試數據方能正常顯示!!由此考慮報表內容存儲格式導致出錯!!(具體可以參考相關鏈接了解LONGVARBINARY與BLOB的區別)
以上描述的問題均為mapper配置文件出現問題導致,在配置mapper文件時需要注意mapper層接口和相應配置文件的名稱、方法名意義對應,需要注意方法的定義(入參、出參),需要注意參數定義的類型(文本型字符串需要考慮數據定義的類型要相對應)
自定義報表存儲器(ftp-待定)
參考鏈接:https://blog.csdn.net/qq_35170213/article/details/80290797
2.數據源配置
打開UReport2的報表設計器,可以看到UReport2提供了三種類型的報表數據源,如下圖所示:三種類型的數據源分別是直接連接數據庫,Spring Bean以及通過實現com.bstek.ureport.definition.datasource.BuildinDatasource接口提供的內置數據源。
配置1:直連數據庫
直接連接數據庫比較簡單,就是在項目的classpath中添加好相應數據庫的驅動Jar包后,在彈出的窗口中配置數據源連接信息即可,如下圖所示:在頁面用數據源配置鏈接數據庫注意,不要刷新瀏覽器,刷新之后鏈接會清空
點擊測試連接,可以看到對應目錄下生成了相應的數據源,右鍵選擇需要操作的數據源可進行“添加數據集、編輯、刪除操作”
根據相應的數據集配置相關的數據:
如果連接測試失敗:查看失敗原因,依次進行查找
Maven引入Oracle驅動依賴
(在pom.xml文件中添加oracle驅動maven依賴存在一定的問題,可參考鏈接了解相關內容https://blog.csdn.net/erlian1992/article/details/74279106)
由于Oracle數據庫JDBC驅動包的使用的JDK版本有所區別,一定要下載對應的JDK版本的Oracle數據庫JDBC驅動,JDK1.5的選擇ojdbc.jar驅動包,如果是JDK1.6及以上版本的選擇ojdbc6.jar驅動包,如果JDK環境是JDK1.8,那么選擇ojdbc6.jar驅動包。
方式1:可以通過在官網下載相應的jar包:
https://www.oracle.com/technetwork/database/application-development/jdbc/downloads/index.html
方式2:如果本地安裝了oracle數據庫,則可在指定目錄查找到相應的ojdbc6.jar(其路徑為對應安裝目錄)E:OracleappAdministratorproduct11.2.0dbhome_1jdbclibojdbc6.jar)
接下來就是手動向Maven的本地倉庫中添加Oracle數據庫的JDBC驅動依賴。安裝的前提是你的電腦必須安裝了Maven,并且配置了Maven環境變量(參考maven配置)通過cmd窗口(或Eclipse的Maven插件、IDEA的Terminal)執行命令(雖然使用的工具不同,但是指定的文件位置和Maven坐標都是一樣的)
需要注意的是如果是使用方式2,需要將相關的ojdb6.jar包放到其他文件夾中,不要在oracle安裝目錄下直接執行指令,可能會出現Oracle拒絕訪問的情況
此處用eclipse的maven插件實現(Terminal)
$ mvn install:install -file -Dfile=F:jarojdbc6.jar -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.1.0 -Dpackaging=jar(根據實際調整路徑)
進入到指定的目錄下直接執行:
$ mvn install:install-file -Dfile=ojdbc6.jar -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.1.0 -Dpackaging=jar
執行完成之后可以看到對應的mvn安裝倉庫有相應的資源生成:
完成jar導入到本地倉庫之后,則可在項目中添加使用oracle相關依賴(添加的依賴版本需要與指定的數據(導入到maven本地倉庫時的依賴定義)一致),如果依賴引入失敗,查看對應的定義的版本、依賴是否一致
<!-- 添加oracle驅動依賴 -->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.1.0</version>
</dependency>
配置2:SpringBean數據源
Spring Bean類型的數據源可以選擇Spring上下文中定義好的一個Bean來作為數據源,點擊
圖標,在彈出的窗口中輸入數據源名稱及要采用的Bean的ID,如下圖所示:
保存后,就可以在這個數據源下添加具體的數據集,添加方法就是在這個數據源下右鍵,在彈出的菜單中選擇添加數據集,在彈出的窗口中定義數據集名稱、對應的方法名以及返回對象類型,如下圖所示:
(如果springBean中沒有指定id的bean兌現個,此處在添加數據集,選擇方法的時候相應報錯-空指針異常,指定的bean對象不存在)
在Spring bean數據集配置中,方法名我們可以點擊右側的“選擇方法”按鈕來選擇當前Bean對應的類中定義的方法,但這里對方法的要求是:方法必須要有三個參數,依次是String,String,Map,比如我們上面定義的testBean里就包含兩個合法的方法,如下所示:
對于一個合法的Bean數據集方法要有三個參數,分別是String,String,Map,依次對應數據源名稱、數據集名稱以及外部傳入的參數Map,Bean的方法只有是這種結構才可以進行選擇。對于數據集方法的返回值,目前來說可以支持兩種類型,一種是我們TestBean中返回的Map<String,Object>類型的List集合;另一種就是返回一個POJO類型的List集合,比如像下面的方法: 在上面的示例方法中,返回的就是User對象集合,這里的User對象,就是一個普通的POJO對象。(提供示例可以通過SpringBean自定義相關數據實現)
參考上述介紹,設置了如下數據配置:
在dada-report下創建com.dada.report.datasource包,創建相應的xxxBean類,并在指定的ureport配置文件中配置bean對象(或者是直接通過@Component注解進行定義)
package配置完成,啟動項目,再次填寫數據并點擊保存按鈕,能夠看到相應的SpringBean數據配置完成,相應的會返回相關的方法
選擇相應數據源配置,返回相應為數據類型(如果不配置則需要手動添加字段)
配置3:內置數據源
內置數據源要求實現BuildinDatasource接口,同時將BuildinDatasource接口實現類配置到Spring即可,BuildinDatasource接口源碼如下:
此處測試參考代碼如下:
方式1:借助JDBCUtils工具類(自定義)獲取數據源
package}
在ureport配置文件中配置dataSource對象:
方式2:通過spring管理DataSource數據源(以注解方式獲取數據源連接)
package在ureport配置文件中配置dataSource對象:
多數據源配置問題:
在通過xml配置文件配置的時候,使用@Autowired注解,其按住奧byType自動植入,但如果文中配置兩個相同類型的dataSource,則在項目啟動加載spring自動注入的時候會報錯
org因此在配置注解的時候需要明確注入的是哪個對象(可以參考spring注解說明,了解每個注解之間的異同,參考鏈接:https://www.cnblogs.com/think-in-java/p/5474740.html)
@Resource的作用相當于@Autowired,只不過@Autowired按照byType自動注入
BuildinDatasource接口實現類配置到Spring中后,UReport2會自動檢測到,完成配置啟動測試,在報表設計器中,點擊數據源頁簽中的
按鈕,在彈出的窗口中就可以選擇定義好的內置數據源,如下圖所示:
查看配置是否正確,可通過右鍵選擇添加數據集,如果數據正常顯示則連接正常,但如果出現“數據源不存在”或“后臺空指針異常”則說明數據源配置存在問題,需要進行修改調整
數據源配置方法說明
在數據源中有三個選擇:
服務器啟動期間數據源配置是有效,當服務器重啟后數據源配置并不保存,除卻在spring配置完成的springBean、內置數據源數據是在服務器啟動的時候便加載,直接連接數據源信息不會保存,三種不同的數據源連接方式創建數據保存到指定的xml,重啟服務器后再次加載該模板數據也不會丟失(基本的配置在xml文件中已做存儲)
數據源直接連接:在報表數據多的情況下如果環境替換則難以維護
spring bean數據源:需要指定spring 中 datasource的bean Id,其會在IOC容器中獲取!
內置數據源:在spring配置該數據源對象,即需要創建一個類,其實現
com.bstek.ureport.definition.datasource.BuildinDatasource接口,封裝數據源信息
3.報表的基本使用
參考鏈接:
https://www.w3cschool.cn/ureport/
UReport2教學視頻:http://pan.baidu.com/s/1boWTxF5,密碼:98hj
4.報表設計器與業務結合
在項目中整合報表設計器之后,便可通過相關url完成報表數據的引用,將其與實際業務進行整合,以下簡單說明ureport相關報表設計器的url說明
報表相關url介紹
報表設計器:http://host[:port][/context-path]/ureport/designer
報表預覽:http://host[:port][/context-path]/ureport/preview?_u=報表名稱
預覽正在設計中的報表注意事項:在預覽正在設計器中設計的報表時(也就是_u=p),UReport2會在點擊設計器工具欄
圖標時,將設計中的報表模版信息提交到服務器,存放于當前用戶的session中(用戶會話中),所以一旦用戶session失效,如果我們再次直接預覽_u=p類型報表時,會看到“com.bstek.ureport.console.exception.ReportDesignException: Report data has expired,can not do preview.”這樣的錯誤提示,表示存放于session中的正在設計器中設計的報表模版已經失效,不能預覽。但如果_u的值是一個具體的報表名稱,則不存在這種問題,只有正在設計器中設計的報表模版在預覽中采用了這種機制,這點需要注意。
如果預覽的不是正在設計器中設計的模版,那么只需要給出具體的報表名稱即可,需要注意的是,這里的報表名稱要以其ReportProvider中要求的前綴開始,比如http://localhost:8080/ureport2-demo/ureport/preview?_u=file:test.ureport.xml等。
在線打印:在UReport2的報表預覽頁面中,可以看到UReport2提供了三種在線打印方式,分別是直接HTML打印、直接PDF打印以及PDF在線預覽打印。這其中直接HTML打印是利用瀏覽器的HTML打印功能實現,能用于普通的A4紙類型報表頁面的打印,同時它不能打印出報表中定義的頁眉頁腳,如果有定義的話。對于直接PDF打印以及PDF在線預覽打印是服務端向瀏覽器中寫入PDF流,利用Chrome、Firefox、Edge這些瀏覽器可以在線顯示PDF功能實現的打印,這種是直接打印的PDF,所以可以應付各種復雜報表紙張類型的打印輸出。
Firefox預覽PDF:在預覽PDF時,Firefox不允許當前frame外通過javascript調用其打印功能(目前來看可能是Firefox的Bug),所以我們需要手工點擊其frame內部自帶的打印按鈕實現打印。
在代碼中使用報表
在UReport2當中,我們可以使用ExportManager實現在業務代碼中導出各種類型的報表,ExportManager接口源碼如下:
package因為ExportManager接口實現是配置在Spring當中,所以要使用ExportManager接口,我們需要首先通過Spring的ApplicationContext取到ExportManager實例對象,我們可以通過ExportManager.BEAN_ID來取到對應的Bean實例。
以下測試如何采用ExportManager導出HTML報表,并將報表內容嵌入到一個JSP中。 首先需要采用報表設計器設計好一個報表模版文件,將其保存,比如報表模版保存后的文件名為demo.ureport.xml,然后在項目中創建一個JSP(這里之所以選擇JSP,是因為它最為簡單,可以保證所有的J2EE開發者都能看懂,實際使用時可能是MVC框架、Ajax等,但如果了解了在JSP中用法,其它的就簡單了),在JSP中輸入相應代碼,導出Html報表,并將其寫入到JSP中,完整的JSP源碼如下:
預覽:http://localhost:8084/ureport/preview?_u=file:hhhhh.ureport.xml
在SSM配置基礎上添加相應的jsp文件,完成配置啟動服務器訪問測試:
http://localhost:8084/custom/report/page/other?url=report/testReport
考慮實際業務整合問題:
數據源配置問題
總結
以上是生活随笔為你收集整理的水晶报表 jar包版本过低_工具类学习-UReport报表设计器整合的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为什么电脑不能打字_为什么不能用电脑验光
- 下一篇: 分段线性插值c语言程序_【短道速滑】Op