Enviar búsqueda
Cargar
Report out 2007final
•
0 recomendaciones
•
793 vistas
E
evercislide
Seguir
Educación
Tecnología
Denunciar
Compartir
Denunciar
Compartir
1 de 30
Descargar ahora
Descargar para leer sin conexión
Recomendados
DISQL 2.0: Language for Big Data Analysis Widely Adopted in Baidu
DISQL 2.0: Language for Big Data Analysis Widely Adopted in Baidu
Xiaoming Chen
iReport實做練習part(1)
iReport實做練習part(1)
seatof
Introduction to corona sdk
Introduction to corona sdk
馬 萬圳
NextGen
NextGen
potatongy
Ch02
Ch02
jashliao
Lotus domino开发教程
Lotus domino开发教程
dyzm_2000
图形学讲义
图形学讲义
guest829549204
竞赛中C++语言拾遗
竞赛中C++语言拾遗
乐群 陈
Recomendados
DISQL 2.0: Language for Big Data Analysis Widely Adopted in Baidu
DISQL 2.0: Language for Big Data Analysis Widely Adopted in Baidu
Xiaoming Chen
iReport實做練習part(1)
iReport實做練習part(1)
seatof
Introduction to corona sdk
Introduction to corona sdk
馬 萬圳
NextGen
NextGen
potatongy
Ch02
Ch02
jashliao
Lotus domino开发教程
Lotus domino开发教程
dyzm_2000
图形学讲义
图形学讲义
guest829549204
竞赛中C++语言拾遗
竞赛中C++语言拾遗
乐群 陈
Introduction To Direct Show
Introduction To Direct Show
guestce3937
Introduction To Direct Show
Introduction To Direct Show
guestce3937
Powerpoint使用指南
Powerpoint使用指南
verimportpig
Free Marker中文文档
Free Marker中文文档
yiditushe
Word 2010完全制霸
Word 2010完全制霸
皓仁 柯
系統程式 -- 第 12 章
系統程式 -- 第 12 章
鍾誠 陳鍾誠
DNN
DNN
guestfafcda
DNN
DNN
guestfafcda
筆硯公文製作系統操作說明
筆硯公文製作系統操作說明
pesrdc006
CKAN 技術介紹 (開發篇)
CKAN 技術介紹 (開發篇)
Chengjen Lee
Spm5 data analysis of fmri (chinese edition)
Spm5 data analysis of fmri (chinese edition)
Hanna LU
Bluemix node red-part iii
Bluemix node red-part iii
Joseph Chang
Sql2005 reporting services報表設計
Sql2005 reporting services報表設計
iamhrm
[系列活動] 手把手教你R語言資料分析實務
[系列活動] 手把手教你R語言資料分析實務
台灣資料科學年會
Practical data analysis in R: from data collection to data insight
Practical data analysis in R: from data collection to data insight
Chun-Min Chang
Practical Data Analysis in R
Practical Data Analysis in R
Chun-Ming Chang
Windows Mobile 多媒體應用程式開發
Windows Mobile 多媒體應用程式開發
Chui-Wen Chiu
Hadoop基础及hive入门
Hadoop基础及hive入门
haiwang
2021laravelconftwslides12
2021laravelconftwslides12
LiviaLiaoFontech
ICT-old-ch19-converted.pptx
ICT-old-ch19-converted.pptx
liutommy1
哪里可以购买日本筑波学院大学学位记/做个假的文凭可认证吗/仿制日本大学毕业证/意大利语CELI证书定制
哪里可以购买日本筑波学院大学学位记/做个假的文凭可认证吗/仿制日本大学毕业证/意大利语CELI证书定制
jakepaige317
EDUC6506_ClassPresentation_TC330277 (1).pptx
EDUC6506_ClassPresentation_TC330277 (1).pptx
mekosin001123
Más contenido relacionado
Similar a Report out 2007final
Introduction To Direct Show
Introduction To Direct Show
guestce3937
Introduction To Direct Show
Introduction To Direct Show
guestce3937
Powerpoint使用指南
Powerpoint使用指南
verimportpig
Free Marker中文文档
Free Marker中文文档
yiditushe
Word 2010完全制霸
Word 2010完全制霸
皓仁 柯
系統程式 -- 第 12 章
系統程式 -- 第 12 章
鍾誠 陳鍾誠
DNN
DNN
guestfafcda
DNN
DNN
guestfafcda
筆硯公文製作系統操作說明
筆硯公文製作系統操作說明
pesrdc006
CKAN 技術介紹 (開發篇)
CKAN 技術介紹 (開發篇)
Chengjen Lee
Spm5 data analysis of fmri (chinese edition)
Spm5 data analysis of fmri (chinese edition)
Hanna LU
Bluemix node red-part iii
Bluemix node red-part iii
Joseph Chang
Sql2005 reporting services報表設計
Sql2005 reporting services報表設計
iamhrm
[系列活動] 手把手教你R語言資料分析實務
[系列活動] 手把手教你R語言資料分析實務
台灣資料科學年會
Practical data analysis in R: from data collection to data insight
Practical data analysis in R: from data collection to data insight
Chun-Min Chang
Practical Data Analysis in R
Practical Data Analysis in R
Chun-Ming Chang
Windows Mobile 多媒體應用程式開發
Windows Mobile 多媒體應用程式開發
Chui-Wen Chiu
Hadoop基础及hive入门
Hadoop基础及hive入门
haiwang
2021laravelconftwslides12
2021laravelconftwslides12
LiviaLiaoFontech
ICT-old-ch19-converted.pptx
ICT-old-ch19-converted.pptx
liutommy1
Similar a Report out 2007final
(20)
Introduction To Direct Show
Introduction To Direct Show
Introduction To Direct Show
Introduction To Direct Show
Powerpoint使用指南
Powerpoint使用指南
Free Marker中文文档
Free Marker中文文档
Word 2010完全制霸
Word 2010完全制霸
系統程式 -- 第 12 章
系統程式 -- 第 12 章
DNN
DNN
DNN
DNN
筆硯公文製作系統操作說明
筆硯公文製作系統操作說明
CKAN 技術介紹 (開發篇)
CKAN 技術介紹 (開發篇)
Spm5 data analysis of fmri (chinese edition)
Spm5 data analysis of fmri (chinese edition)
Bluemix node red-part iii
Bluemix node red-part iii
Sql2005 reporting services報表設計
Sql2005 reporting services報表設計
[系列活動] 手把手教你R語言資料分析實務
[系列活動] 手把手教你R語言資料分析實務
Practical data analysis in R: from data collection to data insight
Practical data analysis in R: from data collection to data insight
Practical Data Analysis in R
Practical Data Analysis in R
Windows Mobile 多媒體應用程式開發
Windows Mobile 多媒體應用程式開發
Hadoop基础及hive入门
Hadoop基础及hive入门
2021laravelconftwslides12
2021laravelconftwslides12
ICT-old-ch19-converted.pptx
ICT-old-ch19-converted.pptx
Último
哪里可以购买日本筑波学院大学学位记/做个假的文凭可认证吗/仿制日本大学毕业证/意大利语CELI证书定制
哪里可以购买日本筑波学院大学学位记/做个假的文凭可认证吗/仿制日本大学毕业证/意大利语CELI证书定制
jakepaige317
EDUC6506_ClassPresentation_TC330277 (1).pptx
EDUC6506_ClassPresentation_TC330277 (1).pptx
mekosin001123
EDUC6506(001)_ClassPresentation_2_TC330277 (1).pptx
EDUC6506(001)_ClassPresentation_2_TC330277 (1).pptx
mekosin001123
educ6506presentationtc3302771-240427173057-06a46de5.pptx
educ6506presentationtc3302771-240427173057-06a46de5.pptx
mekosin001123
泽兰应用科学大学毕业证制作/定制国外大学录取通知书/购买一个假的建国科技大学硕士学位证书
泽兰应用科学大学毕业证制作/定制国外大学录取通知书/购买一个假的建国科技大学硕士学位证书
jakepaige317
1.🎉“入侵大学入学考试中心修改成绩”来袭!ALEVEL替考大揭秘,轻松搞定考试成绩! 💥你还在为无法进入大学招生系统而烦恼吗?想知道如何通过技术手段更改...
1.🎉“入侵大学入学考试中心修改成绩”来袭!ALEVEL替考大揭秘,轻松搞定考试成绩! 💥你还在为无法进入大学招生系统而烦恼吗?想知道如何通过技术手段更改...
黑客 接单【TG/微信qoqoqdqd】
Último
(6)
哪里可以购买日本筑波学院大学学位记/做个假的文凭可认证吗/仿制日本大学毕业证/意大利语CELI证书定制
哪里可以购买日本筑波学院大学学位记/做个假的文凭可认证吗/仿制日本大学毕业证/意大利语CELI证书定制
EDUC6506_ClassPresentation_TC330277 (1).pptx
EDUC6506_ClassPresentation_TC330277 (1).pptx
EDUC6506(001)_ClassPresentation_2_TC330277 (1).pptx
EDUC6506(001)_ClassPresentation_2_TC330277 (1).pptx
educ6506presentationtc3302771-240427173057-06a46de5.pptx
educ6506presentationtc3302771-240427173057-06a46de5.pptx
泽兰应用科学大学毕业证制作/定制国外大学录取通知书/购买一个假的建国科技大学硕士学位证书
泽兰应用科学大学毕业证制作/定制国外大学录取通知书/购买一个假的建国科技大学硕士学位证书
1.🎉“入侵大学入学考试中心修改成绩”来袭!ALEVEL替考大揭秘,轻松搞定考试成绩! 💥你还在为无法进入大学招生系统而烦恼吗?想知道如何通过技术手段更改...
1.🎉“入侵大学入学考试中心修改成绩”来袭!ALEVEL替考大揭秘,轻松搞定考试成绩! 💥你还在为无法进入大学招生系统而烦恼吗?想知道如何通过技术手段更改...
Report out 2007final
1.
目 錄 前言..........................................................................................................................................................2 壹.製作準備 .............................................................................................................................................2
(一)下載所需.........................................................................................................2 (二)環境建置.........................................................................................................3 貳.使用 Ireport 設計報表 ........................................................................................................................3 (一)報表欄位、變數與參數設定.........................................................................4 (1)Using Field ................................................................................................4 (2)Using Group ..............................................................................................5 (3)Using variable ...........................................................................................6 (4)Using Parameter ........................................................................................7 (二)報表內文設計.................................................................................................7 (1)設計報表架構...........................................................................................7 (2)加入報表物件...........................................................................................9 (3)編譯 JRxml 檔 ........................................................................................15 參.在網頁上執行 ...................................................................................................................................16 簡介 JasperReport API ........................................................................................16 程式撰寫..............................................................................................................18 HTML 輸出 .................................................................................................18 HTML 呈現 .................................................................................................20 HTML 預覽與列印 .....................................................................................22 其它輸出格式......................................................................................................26 PDF 輸出 .....................................................................................................26 Excel 輸出 ...................................................................................................28 Xls 輸出 .......................................................................................................28 RTF 輸出 .....................................................................................................29 參考文件................................................................................................................................................30 1
2.
前言 本文流程是以一個案例來說明報表的製作,因此,其案例需求描述為:將一 份關鍵名單依照”城市別”作分群並記算其筆數,而後以報表印出。(本案例參考 來自:jasperReport_prj1.2.7
的 demo case。)因此,預期會有: 1. 製作「分群」的報表。過程會實作如何設定報表欄位、報表變數以及報表參 數。 2. 藉由 java 網頁程式,以實現用 Borwser 觀看常見的報表格式。 3. 簡介 JasperReport 關於報表輸出格式的 API。 最後,不免俗地,再 review 一下 JasperReport 之目的吧: The main purpose of JasperReports is to help create page-oriented ready-to-print documents in a simple and flexible manner。 壹.製作準備 (一)下載所需 1. Ireport1.2.7(內即附有 JasperReport.jar) http://prdownloads.sourceforge.net/ireport/iReport-1.2.7-windows-installer.e xe?download 2. ItextAsian.jar (當無此,如指定 pdf 為 output 文件,將無法顯示字型) http://itext.sourceforge.net/downloads/iTextAsian.jar 3. Tomcat4 or later http://tomcat.apache.org/ 4. JDK http://java.sun.com 2
3.
(二)環境建置 1. 為使編譯後的*.jasper
與*.jrxml 放在同一目錄: Options > 選項 > 編譯,勾選"編譯在報表資料夾"。 2. 設定外部程式 pdf: Options > 選項 > 外部程式,設定[pdf 預覽],找到 pdf 的執行程式 AcroRd32.exe。其它如 html, rtf, cvs 等亦是可設定。 3. 啟動一個 tomcat server。 貳.使用 Ireport 設計報表 本範例設計結果如下: 而其執行結果如下:(PDF format) 3
4.
(一)報表欄位、變數與參數設定 下拉式選單 檔案 >
開啟新檔,在”報表名稱”填入一報表名 稱”PrintReport.jrxml”,其它照預設。 在 檔案 > 存檔,存至<webroot>out_demoreports 下。 (1)Using Field 建立四個欄位,並在 預覽 > 報表欄位 > 新增,設定如下: 欄位名 屬性設定 City 預設 Id: [Field class type]:Java.lang.integer Name 預設 Street 預設 4
5.
(2)Using Group 預覽
> 報表群組 > 新增,新增設定如下: 一 群組欄位 屬性設定 CityGroup [Group expression] $F{City} [Min height to start new page] 60 [Group header(footer) band height] 20 Note: 在報表結構內會產生一”CityGroupHeader” 與”CityGroupFooter”,且[報表變數]會自動產生對應變數。 5
6.
(3)Using variable 在 預覽
> 報表變數 > 新增,設定如下: 變數名 屬性設定 CityNumber [Variable Name] CityNumber [class type] Integer [calcuation type] System [Reset type] Group [Reset group] Citygroup [Increment type] None [Initial value expression] ($V{CityNumber} != null)?(new Integer($V{CityNumber}.intValue() + 1)):(new Integer(1)) (注意不是 variable expression) 6
7.
(4)Using Parameter 在 預覽
> 報表參數 > 新增,新增設定如下: 參數名 屬性設定 BaseDir,報表之 Logo 圖 [Class type] java.lang.File 片的路徑指定。 勾選 is for prompt ReportTitle [Class type] java.lang.String 勾選 is for prompt (二)報表內文設計 (1)設計報表架構 要在報表內文加入各種物件前,先調整高度,以利配置物件: 在 預覽 > 欄,設定 Band height 7
8.
分別設定如下: Document Struct
Setup Title Band:height 50 PageHeader Band:height 20 ColumnHeader Band:height 0 CityGroupHeader Band:height 20 Detailer Band:height 20 CityGroupFooter Band:height 20 ColumnFooter Band:height 0 PageFooter Band:height 40 Summary Band:height 0 8
9.
(2)加入報表物件 (A)Title 欄
先取一 Frame 容器 ,並於其上放入下表所述物件: 報表物件 頁籤 屬性設定 9
10.
Image
【Image】 1.在[Image expresson]加入 new File($P{BaseDir}, "via.gif") 2.[Class]選 java.io.File 【Hyper-link】 1.[hyperlink target]:self 2.[hyperlink type]:reference 3.[hyperlink reference]加入 “www.viatech.com” Text Field 【Text Field】 [evaluation time]:Now [Textfield expression]:$P{ReportTitle} 【Font】 [Font name]新細明體(中文字型即可) [PDF font name] Msung-Light [PDF Encoding] UniCNS-UCS2-H (Chinese traditional) 勾取 PDF Embedded (B)PageHeader 設定如下: 報表物件 頁籤設定 屬性設定 【common】 [backgroup] ,[Foregroup] black Rectangle [top]:5 [left]:0 [height]:15 10
11.
Static text
【common】 [backgroup] black [Foregroup] white 分別設置三個: 【Font】 [Font name]新細明體(中文字型即可) ID,Name,Street [PDF font name] Msung-Light [PDF Encoding] UniCNS-UCS2-H (Chinese traditional) 勾取 PDF Embedded 【static Text】 分別填入”ID”,”姓名”,”住所街道” (C)CityGroupHeader 設定如下: 報表物件 頁籤 屬性設定 【common】 1.[bg],[fg]: 銀色 Rectangle TextField 【common】 勾選[transparent] (下方圖層看顯現出來) 【Font】 [Font name]新細明體(中文字型即可) [PDF font name] Msung-Light [PDF Encoding] UniCNS-UCS2-H (Chinese traditional) 勾取 PDF Embedded 11
12.
【TextField】 [TextField Expression]:
" "+ String.valueOf($V{CityNumber}) + ". " + String.valueOf($F{City}) 【Common】 依序設定 top, left, height 分別為 19, 0, 1 Line (D)Detailer 報表物件 頁籤 屬性設定 TextField 【TextField】 在[Textfield expression],分別對三個 物件加入: 分別加入 $F{Id} 三個: $F{Name} id,name,str $F{Street} eet 【Font】 [Font name]新細明體(中文字型即可) [PDF font name] Msung-Light [PDF Encoding] UniCNS-UCS2-H (Chinese traditional) 勾取 PDF Embedded 【Common】 依序設定 top,left,height:19, 0, 1 Line 12
13.
(E)CityGroupFooter
報表物件 頁籤 屬性設定 【common】 依序設定 top,left,height:19, 0, 1 Line Static text Count 【Static Text】加入文字 ”計數:” 【Font】 [Font name]新細明體(中文字型即可) [PDF font name] Msung-Light [PDF Encoding] UniCNS-UCS2-H (Chinese traditional) 勾取 PDF Embedded Text field 【Text Field】[Textfield expression] 加入 $V{CityGroup_COUNT} 【Font】 [Font name]新細明體(中文字型即可) [PDF font name] Msung-Light [PDF Encoding] UniCNS-UCS2-H (Chinese traditional) 勾取 PDF Embedded (F)PageFooter 13
14.
報表物件
頁籤 屬性設定 【Common】 分別設定 Top,Left,Height:10, 0, 1 Line TextField 【Text Field】1. [Evaluation Time] now 2. [Textfield expression] "Page " + String.valueOf($V{PAGE_NUMBER}) + " of" TextField 【TextField】 1.[Evaluation time] Report 2.[TextField expression] " " + String.valueOf($V{PAGE_NUMBER}) TextField 【TextField】 1. [Evaluation time] Now 2. [Textfield expression] “關鍵名單” 註:上述三者 [Font name]新細明體(中文字型即可) [PDF font name] Msung-Light 的【Font】 [PDF Encoding] UniCNS-UCS2-H (Chinese traditional) 勾取 PDF Embedded 設計完後,大致對照如下圖: 14
15.
(3)編譯 JRxml 檔
將設計好的 JRxml 檔作編譯,建立 > 編譯,編譯後的檔案(jasper),會 放置於同目錄內。此外,亦可於 ireport 直接執行報表(先決定要預覽的 format) 15
16.
參.在網頁上執行 簡介 JasperReport API
該架構圖主要呈現與報表輸出有關的 API,其由上而下的順序,使得以瞭解 報表中介過程中所會使用的程式介面為何,如此,將有助程式員之程式的開發。 下方會展示不同格式文件的輸出,將會用到架構圖上的所列 API。 各項類別的內容可參閱官方 JasperRepor API http://jasperreports.sourceforge.net/api/index.html。 jasperReport 類別 功能說明 JasperCompilerManager 負責將*.jrxml 編譯成*.jasper or JasperReport 物 件。 JasperFillManger 負責將*.jasper 轉製成*.jrprint or JasperPrint 物 件。 JasperRunManager 負責將*.jasper 轉製成所需輸出格式的文件。 Jr***Export 負責將*.jrprint or JasperPrint 物件轉製成所需輸 包括有: 出格式的文件。 JexcelApiExporter JRCvsExporter JRHtmlExporter JRPdfExporter JRRtfExporter 等 JasperExportManager 負責將*.jrprint or JasperPrint 物件轉製成所需輸 出格式的文件。 JasperPrintManager 負責將*.jrprint or JasperPrint 物件列印出。 16
17.
JasperReport 輸出相關 API
架構圖 *.Jrxml 檔 JasperCompilerManager Class 之方法 JapserReport 物件 *.Jasper 檔 JasperFillManger Class 之方法 *.Jrprint 檔 JasperPrint 物件 JasperRunManager Class Jr***Export 之方法 Class 之方法 JasperExportManager Class 之方法 不同文件格式輸出檔 (如 Html, Rtf, Pdf 等) JasperPrintManager Class 之方法 文 件 17
18.
程式撰寫 HTML 輸出 Out_demo/HtmlOutput.jsp <%-- HTML 文件輸出(在同一目錄下) --%> <%@
page contentType="text/html; charset=Big5" %> <%@ page import="datasource.*" %> <%@ page import="net.sf.jasperreports.engine.*" %> <%@ page import="net.sf.jasperreports.engine.util.*" %> <%@ page import="net.sf.jasperreports.engine.export.*" %> <%@ page import="net.sf.jasperreports.j2ee.servlets.*" %> <%@ page import="java.util.*" %> <%@ page import="java.io.*" %> <% //取得並讀取 jasper 檔,以取得 jasperReport 物件 File reportFile = new File(application.getRealPath("/out_demo/reports/PrintReport.jasper"));//注意*.jasper 之路徑 if (!reportFile.exists()) throw new JRRuntimeException("File PrintReport.jasper not found. The report design must be compiled first."); JasperReport jasperReport = (JasperReport)JRLoader.loadObject(reportFile.getPath()); //設定報表參數 Map parameters = new HashMap(); parameters.put("ReportTitle", "地址表列"); parameters.put("BaseDir", reportFile.getParentFile()); //取得 jasperPrint 物件,但並未實際產生列表檔 JasperPrint jasperPrint = JasperFillManager.fillReport( jasperReport, 18
19.
parameters,
new WebappDataSource() ); JRHtmlExporter exporter = new JRHtmlExporter(); exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);//指定要輸 入的列表檔 File destFile = new File(reportFile.getParent(), jasperPrint.getName() + ".Html"); exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, destFile.toString());//指定輸出名稱 //*****可在輸出的 html 檔內加入一些文字,包括:檔頭、頁間、檔尾。**** // exporter.setParameter(JRHtmlExporterParameter.HTML_HEADER, "hello amos"); // exporter.setParameter(JRHtmlExporterParameter.BETWEEN_PAGES_HTML, "mary is good"); // exporter.setParameter(JRHtmlExporterParameter.HTML_FOOTER, "life is dream"); exporter.exportReport();//執行 %> <html> <body> 已成功輸出一個 html 檔! </body> </html> 19
20.
HTML 呈現 Out_demo/HtmlShow.jsp <%-- Html 文件呈現(在同一目錄下) --%> <%@
page contentType="text/html; charset=Big5" %> <%@ page import="datasource.*" %> <%@ page import="net.sf.jasperreports.engine.*" %> <%@ page import="net.sf.jasperreports.engine.util.*" %> <%@ page import="net.sf.jasperreports.engine.export.*" %> <%@ page import="net.sf.jasperreports.j2ee.servlets.*" %> <%@ page import="java.util.*" %> <%@ page import="java.io.*" %> <% //取得並讀取 jasper 檔,以取得 jasperReport 物件 File reportFile = new File(application.getRealPath("/out_demo/reports/PrintReport.jasper")); 20
21.
if (!reportFile.exists())
throw new JRRuntimeException("File PrintReport.jasper not found. The report design must be compiled first."); JasperReport jasperReport = (JasperReport)JRLoader.loadObject(reportFile.getPath()); //設定報表參數 Map parameters = new HashMap(); parameters.put("ReportTitle", "地址表列"); parameters.put("BaseDir", reportFile.getParentFile()); //取得 jasperPrint 物件,但並未實際產生列表檔 JasperPrint jasperPrint = JasperFillManager.fillReport( jasperReport, parameters, new WebappDataSource() ); JRHtmlExporter exporter = new JRHtmlExporter(); exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);//指定要輸 入的列表檔 File destFile = new File(reportFile.getParent(), jasperPrint.getName() + ".Html"); exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, destFile.toString());//指定輸出名稱 //******非常重要的功能 分頁 指定 pageIndex 可使 scroll_bar auto_move************* : ; , // exporter.setParameter(JRExporterParameter.PAGE_INDEX, new Integer(pageIndex)); exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, out);//輸出文件於 response 網頁上 //指定文件圖檔部份,無設此者,僅呈現文字 exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, "../servlets/image?image="); exporter.exportReport();//執行 %> <html> <head> 21
22.
<title>
已成功呈現一個 html 檔! </title> </head> <body> 已成功輸出一個 html 檔! </body> </html> HTML 預覽與列印 預覽 Out_demo/HtmlPrint.jsp <%-- 針對 HTML 的列印需求,包括"預覽列印"、"列印單頁報表"、"列印全部報表" --%> <%@ page contentType="text/html; charset=big5" %> <%@ page import="datasource.*" %> <%@ page import="net.sf.jasperreports.engine.*" %> <%@ page import="net.sf.jasperreports.engine.util.*" %> <%@ page import="net.sf.jasperreports.engine.export.*" %> <%@ page import="net.sf.jasperreports.j2ee.servlets.*" %> <%@ page import="java.util.*" %> <%@ page import="java.io.*" %> <% JasperPrint jasperPrint=null; jasperPrint=(JasperPrint)session.getAttribute("ReportDuc"); if (request.getParameter("reload") != null || jasperPrint == null) { File reportFile = new File(application.getRealPath("/out_demo/reports/PrintReport.jasper")); if (!reportFile.exists()) 22
23.
throw new JRRuntimeException("File
PrintReport.jasper not found. The report design must be compiled first."); JasperReport jasperReport = (JasperReport)JRLoader.loadObject(reportFile.getPath()); Map parameters = new HashMap(); parameters.put("ReportTitle", "列印名單"); parameters.put("BaseDir", reportFile.getParentFile()); jasperPrint = JasperFillManager.fillReport( jasperReport, parameters, new WebappDataSource() ); session.setAttribute("ReportDuc", jasperPrint); } JRHtmlExporter exporter = new JRHtmlExporter(); //*********************換頁設計 start*********************************/ int pageIndex = 0; int lastPageIndex = 0; if (jasperPrint.getPages() != null) { lastPageIndex = jasperPrint.getPages().size() - 1; } String pageStr = request.getParameter("page"); try { pageIndex = Integer.parseInt(pageStr); } catch(Exception e) { e.printStackTrace(); } if (pageIndex < 0) { 23
24.
pageIndex = 0;
} if (pageIndex > lastPageIndex) { pageIndex = lastPageIndex; } //*********************換頁設計 end*********************************/ StringBuffer sbuffer = new StringBuffer(); exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint); exporter.setParameter(JRExporterParameter.OUTPUT_STRING_BUFFER, sbuffer); exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, "../servlets/image?image="); exporter.setParameter(JRExporterParameter.PAGE_INDEX, new Integer(pageIndex)); exporter.exportReport(); %> <html> <head> <style type="text/css"> a {text-decoration: none} </style> <meta http-equiv="Content-Type" content="text/html; charset=big5"></head> <body text="#000000" link="#000000" alink="#000000" vlink="#000000" > <table width="100%" border="0" align="center"> <tr> <td width="10%"> </td> <td width="82%"><hr size="1" color="#000000"> <strong></strong></td> <td width="8%"><font size="4">列印</font></td> </tr> <tr> <td> </td> <td> <font size="2"><table width="100%" border="0"> <tr> 24
25.
<td width="15%"><a href="print/printall.jsp"
target="_blank">印報表<font size="2">全</font></a><font color="#3366FF" size="4"><strong>|</strong></font> </td> <td width="1%"> </td> <td width="15%"><div onClick="window.print()" style="cursor:hand"><font color="#0033FF">印網頁</font><font color="#3366FF" size="4"><strong>|</strong></font></div></td> <script> function isprint() { if(confirm("列印此頁?")) window.open("print/printThis.jsp?index=<%=pageIndex%>","列印我"); } </script> <td width="15%"><div onClick="isprint()" style="cursor:hand">印本頁<font color="#3366FF" size="4"><strong>|</strong></font></div></td> <td width="10%"><a href="HtmlPrint.jsp?page=0">首頁</a><font color="#3366FF" size="4"><strong>|</strong></font></td> <td width="10%"><a href="HtmlPrint.jsp?page=<%=pageIndex - 1%>">上頁</a><font color="#3366FF" size="4"><strong>|</strong></font></td> <td width="10%"><a href="HtmlPrint.jsp?page=<%=pageIndex + 1%>">下頁</a><font color="#3366FF" size="4"><strong>|</strong></font></td> <td width="10%"><a href="HtmlPrint.jsp?page=<%=lastPageIndex%>">尾頁</a><font color="#3366FF" size="4"><strong>|</strong></font></td> <td width="15%"><a href="HtmlPrint.jsp?reload=true">重新下載</a><font color="#3366FF" size="4"><strong>|</strong></font></td> </tr> </table></font> </td> <td>示範</td> </tr> </table> 25
26.
<hr> <table width="100%" cellpadding="0"
cellspacing="0" border="0"> <tr> <td width="30%" height="33"> </td> <td align="center"> <%=sbuffer.toString()%> </td> <td width="27%"> </td> </tr> </table> </body> </html> 列印 <% //out_demoprintprintThis.jsp String aa=request.getParameter("index"); JasperPrint jasperPrint = (JasperPrint)session.getAttribute("ReportDuc"); JasperPrintManager.printPage(jasperPrint,Integer.parseInt(aa),false); %> //out_demoprintprintall.jsp <% JasperPrint jasperPrint = (JasperPrint)session.getAttribute("ReportDuc"); JasperPrintManager.printReport(jasperPrint,true); %> 其它輸出格式 包括有受歡迎的 pdf,以及 xls、csv、rtf 等。 PDF 輸出 程式碼:Out_demo/PdfShow.jsp 26
27.
在 Web.xml 設定,使用
jsp-file 做報表元件的話,於 web.xml 加上下述 <servlet> <servlet-name>pdf</servlet-name> <jsp-file>out_demo/PdfShow.jsp</jsp-file> </servlet> <servlet-mapping> <servlet-name>pdf</servlet-name> <url-pattern>servlets/PdfShow.pdf</url-pattern> </servlet-mapping> 此外,如果是使用 servlet 做報表元件的話,於 web.xml 加上下述 <servlet> <servlet-name>pdfreport</servlet-name> <servlet-class>out_demo/PdfShow.jsp</servlet-class> </servlet> <servlet-mapping> <servlet-name> pdfreport </servlet-name> <url-pattern>serlvers/PdfShow.pdf</url-pattern> </servlet-mapping> 27
28.
Excel 輸出
程式碼:Out_demo/ExcelShow.jsp 圖表 1 加這段文字於 web.xml <servlet> <servlet-name>csvreport</servlet-name> <jsp-file>out_demo/CsvShow.jsp</jsp-file> </servlet> <servlet-mapping> <servlet-name> csvreport </servlet-name> <url-pattern>servlets/CsvShow.csv</url-pattern> </servlet-mapping> Xls 輸出 程式碼:Out_demo/XlsShow.jsp 28
29.
加這段文字於 web.xml <servlet>
<servlet-name>xslreport</servlet-name> <jsp-file>out_demo/XslShow.jsp</jsp-file> </servlet> <servlet-mapping> <servlet-name>xslreport</servlet-name> <url-pattern> servlets/ XslShow.xls </url-pattern> </servlet-mapping> RTF 輸出 程式碼:Out_demo/RtfShow.jsp 29
30.
加這段文字於 web.xml <servlet>
<servlet-name>rtfreport</servlet-name> <jsp-file>out_demo/Rtfshow.jsp</jsp-file> </servlet> <servlet-mapping> <servlet-name>rtfreport</servlet-name> <url-pattern>servlets/Rtfshow.rtf</url-pattern> </servlet-mapping> 參考文件 1. 製作 iReport 的動畫教學:Tutorials http://jasperforge.org/sf/wiki/do/viewPage/projects.ireport/wiki/HomePage 2. http://www.cjsdn.net/post/view?bid=29&id=103643&sty=3:初階 user 可參考 仍有許多不完美的地方,請多指教!!謝謝 From Amos 30
Descargar ahora