欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
使用JFreeReport生成報表

使用JFreeReport生成報表

文章摘要

JFreeReport用于生成報表。JFreeReport的數據繼承自Swing組件的TableModel接口,使用基于XML的報表格式定義文件對報表進(jìn)行格式化。JFreeReport生成的報表可以分頁(yè)預覽、打印或者保存為多種格式的文件如pdf、Excel、html等。作者在本文中詳細的介紹了如何定義報表格式定義文件、如何使用JFreeReport生成/預覽報表和將報表轉為其它各種格式。

關(guān)鍵詞

JFreeReport  報表生成  預覽

報表生成一直是企業(yè)信息化過(guò)程中重要的一環(huán),也是目前比較難于實(shí)現的一環(huán),今天作者給大家介紹一種新的報表生成組件――JFreeReport。JFreeReport是JFreeReport.Org基于LGPL授權協(xié)議提供的一組java包,用于生成各類(lèi)報表,JFreeReport的數據繼承自Swing組件的TableModel接口,使用基于XML的報表格式定義文件對報表進(jìn)行格式化。JFreeReport生成的報表可以分頁(yè)預覽、打印,而且支持導出為多種格式的文件如pdf、Excel、CSV、html等。更重要的是,JFreeReport不僅支持基于C/S結構的系統,而且支持基于B/S結構的系統中的在線(xiàn)報表顯示。更詳細的關(guān)于JFreeReport的介紹請大家訪(fǎng)問(wèn)JFreeReport的官方網(wǎng)站JFree.org。

1  環(huán)境準備

1.1  JFreeReport組件

請大家到http://prdownloads.sourceforge.net/jfreereport/jfreereport-0.8.4_7.zip?download下載JFreeReport組件,下載的是一個(gè)ZIP文件,然后將ZIP文件解壓縮到c:\jfreereport(后面的章節中將使用%jfreereport_home%表示這個(gè)目錄)目錄下。

1.2  JFreeReport擴展組件

請大家到http://www.jfree.org/jfreereport/jfreereport-ext-0.8.4_7.zip下載JFreeReport擴展組件,他用于支持JFreeReport組件生成的報表的在線(xiàn)顯示。請大載后解壓縮到c:\jfreereport-ext目錄下(后面的章節中將使用%jfreereport_ext_home%表示這個(gè)目錄)

1.3  Ant工具

Apache公司提供的一個(gè)基于JAVA的自動(dòng)化腳本引擎,請大家到http://ant.apache.org/下載ant的可執行文件,關(guān)于如何使用ant請大家查看ant的幫助文檔或者http://ant.apache.org/網(wǎng)站上的在線(xiàn)幫助文檔。示例中主要是用ant來(lái)負責編譯java代碼。

1.4  作者提供的代碼

為了運行本文中作者提到的例子和相關(guān)資源文件,請大家下載作者提供的vivianjDemo.zip文件和中文轉換工具gb2unicode.jar。然后解壓縮到%jfreereport_home%\vivianjDemo(后面的章節中將使用%demo _home%表示這個(gè)目錄)目錄下。

2  JFreeReport生成報表的基本步驟

我們首先演示一個(gè)簡(jiǎn)單的例子,說(shuō)明使用JFreeReport生成報表的一些必要的步驟。

2.1  實(shí)例說(shuō)明

在這個(gè)例子中,我們將循環(huán)生成100條數據放入TableModel中,然后使用JFreeReport組件提供的預覽功能在屏幕上顯示生成的報表。

[注] 為了簡(jiǎn)化,這里僅僅是逐條顯示數據,不作任何修飾和統計工作,所以也不使用報表格式定義文件。

2.2  代碼編制

整個(gè)演示實(shí)例(HelloWorld.java)的代碼和相關(guān)注釋如下,如果你執行了1.3中規定的步驟,你可以在%demo _home%/src/org/vivianj/jfreereport/看到這個(gè)文件。

/*** HelloWorld.java*/package org.vivianj.jfreereport;import java.awt.Color;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.awt.geom.Point2D;import javax.swing.table.DefaultTableModel;import javax.swing.table.TableModel;import org.jfree.report.Boot;import org.jfree.report.ElementAlignment;import org.jfree.report.JFreeReport;import org.jfree.report.ReportProcessingException;import org.jfree.report.elementfactory.TextFieldElementFactory;import org.jfree.report.modules.gui.base.PreviewDialog;import org.jfree.ui.FloatDimension;/*** 使用JFreeReport生成報表的簡(jiǎn)單例子,用于演示使用JFreeReport生成報表的一些基本步驟** 本例子中,為了簡(jiǎn)化操作,報表定義是使用java直接編碼** @ 作者 : bookman*/public class HelloWorld{/*** 處理窗口關(guān)閉事件*/protected static class CloseHandler extends WindowAdapter{public void windowClosing(final WindowEvent event){System.exit(0);}}/*** 創(chuàng  )建和顯示簡(jiǎn)單的報表*/public HelloWorld(){// 獲得創(chuàng  )建報表需要用到的數據final TableModel data = createData();//獲得報表要用到的報表定義內容final JFreeReport report = createReportDefinition();//將報表定義和數據結合report.setData(data);try{//將生成的報表放到預覽窗口中final PreviewDialog preview = new PreviewDialog(report);preview.addWindowListener(new CloseHandler());preview.pack();//顯示報表預覽窗口preview.setVisible(true);}catch (ReportProcessingException e){System.out.println(e);}}/*** 創(chuàng  )建生成報表需要用到的數據** @返回一個(gè)TableModel實(shí)例*/private TableModel createData(){final Object[] columnNames = new String[]{"Column1", "Column2"};final DefaultTableModel result = new DefaultTableModel(columnNames, 100);int rownum = 0;int colnum = 0;for (;rownum < 100 ; rownum++){result.setValueAt("say Hello " + rownum + "次", rownum, 0);result.setValueAt("say World " + rownum + "次" , rownum, 1);}return result;}/*** 創(chuàng  )建一個(gè)報表定義** @返回一個(gè)報表定義實(shí)例*/private JFreeReport createReportDefinition(){final JFreeReport report = new JFreeReport();report.setName("A Very Simple Report");/*** 定義要顯示報表第一列的樣式*/TextFieldElementFactory factory = new TextFieldElementFactory();factory.setName("T1");factory.setAbsolutePosition(new Point2D.Float(0, 0));factory.setMinimumSize(new FloatDimension(150, 20));factory.setColor(Color.black);factory.setHorizontalAlignment(ElementAlignment.LEFT);factory.setVerticalAlignment(ElementAlignment.MIDDLE);factory.setNullString("-");factory.setFieldname("Column1");report.getItemBand().addElement(factory.createElement());/*** 定義要顯示報表第二列的樣式*/factory = new TextFieldElementFactory();factory.setName("T2");factory.setAbsolutePosition(new Point2D.Float(200, 0));factory.setMinimumSize(new FloatDimension(150, 20));factory.setColor(Color.black);factory.setHorizontalAlignment(ElementAlignment.LEFT);factory.setVerticalAlignment(ElementAlignment.MIDDLE);factory.setNullString("-");factory.setFieldname("Column2");report.getItemBand().addElement(factory.createElement());/*** 返回一個(gè)報表定義的實(shí)例*/return report;}public static void main(final String[] args){// 初始化JFreeReportBoot.start();//調用演示實(shí)例new HelloWorld();}}

2.3  運行例子

如果你執行了1.3中規定的步驟,你可以進(jìn)入命令行界面,然后進(jìn)入%demo_home%目錄下,修改setenv.cmd中的相關(guān)設置,執行serenv.cmd設置環(huán)境變量。執行java org.vivianj.jfreereport.HelloWorld查看運行結果。下面這個(gè)圖片是作者執行后結果的屏幕截圖:

大家可以看到,JFreeReport已經(jīng)自動(dòng)幫我們實(shí)現了分頁(yè)。上面這個(gè)圖片顯示的是第一頁(yè)的數據,你可以通過(guò)工具欄中的

查看其它頁(yè)面中的內容。

2.4  基本步驟解釋

使用JFreeReport生成報表通常需要以下三個(gè)基本步驟:

  1. 生成可通過(guò)TableModel接口訪(fǎng)問(wèn)的數據,如本例中的createData方法完成的功能
  2. 生成一個(gè)JFreeReport實(shí)例,他定義了我們如何格式化顯示數據,如本例中的createReportDefinition方法完成的功能
  3. 將數據和JFreeReport實(shí)例連接起來(lái),并且將該JFreeReport實(shí)例傳給PreviewDialog的一個(gè)實(shí)例顯示給用戶(hù)

3  使用JFreeReport生成復雜報表

3.1  報表定義文件

報表定義文件是JFreeReport生成復雜報表的重要文件,他就是一個(gè)XML文檔,主要描述如何使用指定的格式生成復雜的報表,同時(shí)使用報表定義文件也可以在報表格式需要修改時(shí)只需要更新該報表定義文件,而不需要修改應用代碼。

3.1.1  報表定義文件分類(lèi)

JFreeReport中使用了兩種基于XML的報表定義文件來(lái)保存報表定義信息:簡(jiǎn)單格式和擴展格式.很明顯,簡(jiǎn)單格式不能夠完全的描述JFreeReport支持的全部報表定義信息,但是他更易于上手使用。而擴展格式則能夠對JFreeReport的報表定義提供完整的支持,但是擴展格式太詳細了,不太容易使用。

關(guān)于這兩種報表定義格式文件所支持的標簽內容以及如何編寫(xiě)這兩種格式的報表定義文件請大家參考%jfreereport_home%下的jfreereport-0.8.3-A4.pdf中的相關(guān)部分,該文件附錄中還包括了這兩種格式的報表定義文件的DTD文檔供大家參考.當然大家也JFreeReport的例子中提供了多種形式的報表定義文件,基本上涵蓋了常用的報表格式定義,大家可以參考這些例子編寫(xiě)自己的報表定義文件,。

3.2  代碼編制

這個(gè)例子和2.2中的代碼基本一致,只是報表定義內容不再由java編碼實(shí)現,而是由報表定義文件提供,所以調用方面稍微有點(diǎn)不同,詳細的代碼如下,請大家注意其中加粗顯示的部分:

/*** JFreeReport.java*/package org.vivianj.jfreereport;import java.io.File;import java.text.MessageFormat;import javax.swing.table.TableModel;import javax.swing.JFrame;import org.jfree.ui.RefineryUtilities;import org.jfree.report.Boot;import org.jfree.report.modules.gui.base.PreviewFrame;import org.jfree.report.modules.parser.base.ReportGenerator;import org.jfree.report.JFreeReport;import org.vivianj.jfreereport.tablemodel.SampleData;/*** 使用JFreeReport生成復雜報表的例子,* 用于演示使用JFreeReport生成復雜報表的一些基本步驟** 本例子中,報表定義使用了報表定義文件,該文件是保存在c:\下的report3.xml文件* 本例中使用的報表定義使用了簡(jiǎn)單報表定義格式** @ 作者 : bookman*/public class JFreeTest{public JFreeTest(final String urlname, final TableModel data){//創(chuàng  )建對報表定義文件的引用final File in = new File(urlname);;if (in == null){System.out.print(" in is null");return;}System.out.print("Processing Report: " + in);final ReportGenerator gen = ReportGenerator.getInstance();try{//從報表定義文件中獲得要用到的報表定義內容final JFreeReport report1 = gen.parseReport(in);if (report1 == null){System.out.print(" report1 is null");return;}//將報表定義和數據結合report1.setData(data);//將生成的報表放到預覽窗口中final PreviewFrame frame1 = new PreviewFrame(report1);frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame1.pack();RefineryUtilities.positionFrameRandomly(frame1);frame1.setVisible(true);frame1.requestFocus();}catch (Exception e){System.out.print("report.definitionfailure-----------------------\r\n" + e);}}public static void main(String[] args){Boot.start();final TableModel data3 = new SampleData();JFreeTest jft = new JFreeTest("c:\\report3.xml",data3);}}

4  中文亂碼問(wèn)題

大家在參看報表定義文件的時(shí)候會(huì )發(fā)現,里面的報表頭定義中有一些顯示內容,如果你直接將他修改成中文,顯示在報表上就會(huì )亂碼,這是因為這些報表定義文件都是XML文檔,他的encoding默認設置是ISO-8859-1,所以出現了中文亂碼的問(wèn)題,解決辦法有兩個(gè):

1.最簡(jiǎn)單的方法就是將encoding的設置修改為GB2312

2.還有一個(gè)方法就是不修改encoding的設置,而是將這些中文內容使用他們的unicode碼來(lái)代替。

[注] 作者提供了一個(gè)GUI的界面提供這種轉化功能,你只需要輸入中文就可以獲得對應的unicode碼,請大家下載作者提供的gb2unicode.jar,設置好java運行環(huán)境,然后執行java -jar gb2unicode.jar就可以了。

5  總結

報表問(wèn)題是企業(yè)信息化中比較關(guān)注的一個(gè)焦點(diǎn),也比較難于實(shí)現客戶(hù)化,作者在本文中給大家介紹了一個(gè)新的報表生成包-JfreeReport,他可以根據XML文檔中定義的報表格式,生成符合客戶(hù)要求的報表。文章中給出了2個(gè)簡(jiǎn)單的例子,演示了如何使用JFreeReport生成報表的詳細步驟,希望能夠幫助大家熟悉JFreeReport的工作方式。同時(shí)文章中給出了使用JFreeReport過(guò)程中可能遇到的中文問(wèn)題的解決辦法。

其實(shí)JFreeReport還支持在JSP、Servlet中顯示報表,只是還需要用到他的擴展組件,作者這里沒(méi)有給出例子,大家可以參考下載的JFreeReport的擴展組件中的例子。

參考資料

JFreeReport 在線(xiàn)幫助文檔 http://www.jfree.org/jfreereport/index.html

JFreeReport 的JavaDoc http://www.jfree.org/jfreereport/javadoc/index.html

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
B/S環(huán)境下使用JFreeReport展示報表
在Struts中用JFreeChart生成圖表
會(huì )計核算軟件基本操作——金蝶(三)
JFreeChart在webwork中的應用
在servlet中使用jfreereport直接產(chǎn)生pdf文件報表
JFreeChart在JSP中的應用實(shí)例
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久