亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

使用JFreeReport生成報表

2019-11-18 13:10:50
字體:
來源:轉載
供稿:網友

  報表生成一直是企業信息化過程中重要的一環,也是目前比較難于實現的一環,今天作者給大家介紹一種新的報表生成組件――JFreeReport。JFreeReport是JFreeReport.Org基于LGPL授權協議提供的一組java包,用于生成各類報表,JFreeReport的數據繼續自Swing組件的TableModel接口,使用基于xml的報表格式定義文件對報表進行格式化。JFreeReport生成的報表可以分頁預覽、打印,而且支持導出為多種格式的文件如pdf、Excel、CSV、Html等。更重要的是,JFreeReport不僅支持基于C/S結構的系統,而且支持基于B/S結構的系統中的在線報表顯示。更具體的關于JFreeReport的介紹請大家訪問JFreeReport的官方網站JFree.org。
  
  1 環境預備
  1.1 JFreeReport組件
  
  請大家到http://PRdownloads.sourceforge.net/jfreereport/jfreereport-0.8.4_7.zip?download下載JFreeReport組件,下載的是一個ZIP文件,然后將ZIP文件解壓縮到c:/jfreereport(后面的章節中將使用%jfreereport_home%表示這個目錄)目錄下。
  
  1.2 JFreeReport擴展組件
  
  請大家到http://www.jfree.org/jfreereport/jfreereport-ext-0.8.4_7.zip下載JFreeReport擴展組件,他用于支持JFreeReport組件生成的報表的在線顯示。請大載后解壓縮到c:/jfreereport-ext目錄下(后面的章節中將使用%jfreereport_ext_home%表示這個目錄)
  
  1.3 Ant工具
  
  Apache公司提供的一個基于JAVA的自動化腳本引擎,請大家到http://ant.apache.org/下載ant的可執行文件,關于如何使用ant請大家查看ant的幫助文檔或者http://ant.apache.org/網站上的在線幫助文檔。示例中主要是用ant來負責編譯java代碼。
  
  1.4 作者提供的代碼
  
  為了運行本文中作者提到的例子和相關資源文件,請大家下載作者提供的vivianjDemo.zip文件和中文轉換工具gb2unicode.jar。然后解壓縮到%jfreereport_home%/vivianjDemo(后面的章節中將使用%demo _home%表示這個目錄)目錄下。
  
  2 JFreeReport生成報表的基本步驟
  我們首先演示一個簡單的例子,說明使用JFreeReport生成報表的一些必要的步驟。
  
  2.1 實例說明
  
  在這個例子中,我們將循環生成100條數據放入TableModel中,然后使用JFreeReport組件提供的預覽功能在屏幕上顯示生成的報表。
  
  [注] 為了簡化,這里僅僅是逐條顯示數據,不作任何修飾和統計工作,所以也不使用報表格式定義文件。
  
  2.2 代碼編制
  
  整個演示實例(HelloWorld.java)的代碼和相關注釋如下,假如你執行了1.3中規定的步驟,你可以在%demo _home%/src/org/vivianj/jfreereport/看到這個文件。
  
  /**
  * 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生成報表的簡單例子,用于演示使用JFreeReport生成報表的一些基本步驟
  *
  * 本例子中,為了簡化操作,報表定義是使用java直接編碼
  *
  * @ 作者 : bookman
  */
  public class HelloWorld
  {
  /**
  * 處理窗口關閉事件
  */
  protected static class CloseHandler extends WindowAdapter
  {
  public void windowClosing(final WindowEvent event)
  {
  System.exit(0);
  }
  }
  
  /**
  * 創建和顯示簡單的報表
  */
  public HelloWorld()
  {
  // 獲得創建報表需要用到的數據
  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);
  }
  
  }
  
  /**
  * 創建生成報表需要用到的數據
  *
  * @返回一個TableModel實例
  */
  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;
  
  }
  
  /**
  * 創建一個報表定義
  *
  * @返回一個報表定義實例
  */
  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());
  /**
  * 返回一個報表定義的實例
  */
  return report;
  
  }
  
  public static void main(final String[] args)
  {
  // 初始化JFreeReport
  Boot.start();
  
  //調用演示實例
  new HelloWorld();
  }
  
  }
  
  2.3 運行例子
  
  假如你執行了1.3中規定的步驟,你可以進入命令行界面,然后進入%demo_home%目錄下,修改setenv.cmd中的相關設置,執行serenv.cmd設置環境變量。執行java org.vivianj.jfreereport.HelloWorld查看運行結果。下面這個圖片是作者執行后結果的屏幕截圖:
  
  大家可以看到,JFreeReport已經自動幫我們實現了分頁。上面這個圖片顯示的是第一頁的數據,你可以通過工具欄中的查看其它頁面中的內容。
  
  2.4 基本步驟解釋
  
  使用JFreeReport生成報表通常需要以下三個基本步驟:
  
  生成可通過TableModel接口訪問的數據,如本例中的createData方法完成的功能
  生成一個JFreeReport實例,他定義了我們如何格式化顯示數據,如本例中的createReportDefinition方法完成的功能
  將數據和JFreeReport實例連接起來,并且將該JFreeReport實例傳給PreviewDialog的一個實例顯示給用戶
  
  3 使用JFreeReport生成復雜報表
  3.1 報表定義文件
  
  報表定義文件是JFreeReport生成復雜報表的重要文件,他就是一個XML文檔,主要描述如何使用指定的格式生成復雜的報表,同時使用報表定義文件也可以在報表格式需要修改時只需要更新該報表定義文件,而不需要修改應用代碼。
  
  3.1.1 報表定義文件分類
  
  JFreeReport中使用了兩種基于XML的報表定義文件來保存報表定義信息:簡單格式和擴展格式.很明顯,簡單格式不能夠完全的描述JFreeReport支持的全部報表定義信息,但是他更易于上手使用。而擴展格式則能夠對JFreeReport的報表定義提供完整的支持,但是擴展格式太具體了,不太輕易使用。
  
  關于這兩種報表定義格式文件所

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩亚洲成人av在线| 欧美午夜性色大片在线观看| 亚洲精品国产欧美| 国产精品黄页免费高清在线观看| 亚洲欧美综合v| 欧美又大粗又爽又黄大片视频| 国产成人综合精品| 欧美日韩精品在线播放| 亚洲电影在线观看| 亚洲欧洲日产国码av系列天堂| 日本成人在线视频网址| 国产精品一区二区女厕厕| 欧美整片在线观看| 久久精视频免费在线久久完整在线看| 97碰碰碰免费色视频| 国产91色在线播放| 91国内揄拍国内精品对白| 91豆花精品一区| 中文字幕日韩av综合精品| 欧美电影免费在线观看| 日韩国产高清视频在线| 一个人看的www久久| 欧美精品videosex极品1| 国产成人一区二区三区电影| 欧美插天视频在线播放| 久久精品国产视频| 欧美乱大交做爰xxxⅹ性3| 欧美最近摘花xxxx摘花| 高潮白浆女日韩av免费看| 中文字幕九色91在线| 成人国产精品色哟哟| 欧美另类99xxxxx| 中日韩午夜理伦电影免费| 4438全国成人免费| 日韩成人av在线| 97久久精品人搡人人玩| 欧美日韩亚洲精品内裤| 色播久久人人爽人人爽人人片视av| 欧美性生交xxxxx久久久| 亚洲美女性生活视频| 亚洲美女动态图120秒| 国产精品久久久精品| 丁香五六月婷婷久久激情| 亚洲男人天堂网| 97超级碰碰碰久久久| 91精品视频在线| 欲色天天网综合久久| 成人免费福利在线| 亚洲男人天堂2019| 久久夜精品香蕉| 国产精品美女www| 精品国产一区二区在线| 欧美与黑人午夜性猛交久久久| 国产精品老女人视频| 日韩精品福利在线| 高清一区二区三区四区五区| 亚洲精品videossex少妇| 亚洲国产精品久久91精品| 久久99精品久久久久久噜噜| 国产成人精品最新| 欧美一区二区色| 欧美成人精品三级在线观看| 国产精品三级美女白浆呻吟| 国产精品亚洲一区二区三区| 国产成人在线精品| 国产精品偷伦一区二区| 91成人免费观看网站| 亚洲国产精品福利| 亚洲欧美日韩一区在线| 久久av在线看| 国产精品电影久久久久电影网| 国产精品久久久久福利| 日韩大片免费观看视频播放| 97碰在线观看| 国模吧一区二区| 国产精品极品美女在线观看免费| 韩剧1988免费观看全集| 九九久久久久久久久激情| 欧美黄色片免费观看| 色综合色综合久久综合频道88| 福利视频一区二区| 日韩免费电影在线观看| 成人啪啪免费看| 久热精品视频在线| 日本亚洲欧洲色α| 97成人精品视频在线观看| 羞羞色国产精品| 97精品视频在线播放| 久久久久久亚洲精品中文字幕| 色999日韩欧美国产| 欧美另类xxx| 欧美日韩国产中字| 91久久精品在线| 国产精品日日摸夜夜添夜夜av| 欧美电影《睫毛膏》| 亚洲人成人99网站| 亚洲专区中文字幕| 日韩免费在线看| 欧美亚州一区二区三区| 精品国产福利视频| 色偷偷噜噜噜亚洲男人的天堂| 日韩在线观看免费全| 欧美资源在线观看| 欧美国产第二页| 91久久久久久久久久| 91国产一区在线| 热re99久久精品国产66热| 久久国内精品一国内精品| 日本国产精品视频| 精品丝袜一区二区三区| 亚洲字幕一区二区| 亚洲嫩模很污视频| 黄色一区二区三区| 国产精品视频专区| 亚洲另类图片色| 国产亚洲欧美日韩一区二区| 美女性感视频久久久| 日韩电影免费在线观看中文字幕| 日韩精品视频在线免费观看| 久久久久久久久爱| 欧美黄色三级网站| 欧美大片在线影院| 亚洲精品自拍偷拍| 国产精品自产拍高潮在线观看| 久久福利视频导航| 日韩暖暖在线视频| 色偷偷偷综合中文字幕;dd| 97在线视频免费看| 亚洲国产精品福利| 国产精品福利无圣光在线一区| 色哟哟入口国产精品| 中文字幕在线亚洲| 一道本无吗dⅴd在线播放一区| 欧美激情中文字幕在线| 久久香蕉国产线看观看网| 国产亚洲精品成人av久久ww| 欧美性xxxx极品高清hd直播| 91久久久久久久久久久| 成人做爰www免费看视频网站| 91色视频在线观看| 亚洲女成人图区| 久久精品2019中文字幕| 久热精品视频在线观看一区| 欧美小视频在线| 欧美一级大片在线免费观看| 亚洲国产欧美自拍| 日韩美女免费观看| 亚洲人免费视频| 亚洲成人黄色在线观看| 亚洲精品第一国产综合精品| 久久夜色精品国产亚洲aⅴ| 国产精品免费视频xxxx| 欧洲中文字幕国产精品| 色偷偷噜噜噜亚洲男人的天堂| 国产精品久久久久久久美男| 欧美成人手机在线| 日韩视频中文字幕| 在线观看91久久久久久| 亚洲韩国欧洲国产日产av| 久久综合国产精品台湾中文娱乐网| 日韩精品极品视频免费观看| 91精品视频在线| 亚洲欧美日韩另类| 国产成人精品最新|