麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

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

使用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的報表定義提供完整的支持,但是擴展格式太具體了,不太輕易使用。
  
  關于這兩種報表定義格式文件所

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产精品视频专区 | 日美黄色片 | 毛片福利| xxx日本视频| 在线免费观看毛片 | 在线观看国产免费视频 | 国产成人高清在线 | a免费看 | 中文字幕极速在线观看 | 9191久久久久视频 | 日韩视频一二三 | 久久最新免费视频 | 中国videos露脸hd | 国产精品久久久久国产精品三级 | 视频久久免费 | 深夜免费福利视频 | 久久综合给合久久狠狠狠97色69 | 一级在线免费 | 青草久久av | 欧美毛片 | 亚洲午夜国产 | 最新午夜综合福利视频 | 丁香天堂网| 成人短视频在线观看 | 视屏一区 | 成人毛片在线 | 久久国产免费视频 | 99综合视频 | 中文字幕免费一区 | 久精品久久 | 欧美国产免费 | 精品在线一区二区三区 | 成年人视频在线免费观看 | 国产亚洲精彩视频 | 亚洲91精品 | 天天色综合2 | 国产精品刺激对白麻豆99 | 91九色网址 | 日本精品视频一区二区三区四区 | 毛片在线免费观看视频 | 国产在线一级视频 |