Java报表工具

首先要去官网下载所需要的jar包   http://www.jfree.org/jfreechart/

[html]  view plain  copy
  1.   
生成饼图:

[html]  view plain  copy
  1. package jFreeTest;  
  2.   
  3. import java.awt.Font;  
  4.   
  5. import org.jfree.chart.ChartFactory;  
  6. import org.jfree.chart.ChartFrame;  
  7. import org.jfree.chart.JFreeChart;  
  8. import org.jfree.chart.plot.PiePlot;  
  9. import org.jfree.chart.title.TextTitle;  
  10. import org.jfree.data.general.DefaultPieDataset;  
  11.   
  12. public class Test1 {  
  13.     /**  
  14.      * @param args  
  15.      */  
  16.     public static void main(String[] args) {  
  17.         //默认饼图数据集  
  18.         DefaultPieDataset dpd=new DefaultPieDataset();  
  19.           
  20.         dpd.setValue("市场部",25);  
  21.         dpd.setValue("IT部",50);  
  22.         dpd.setValue("财务部",30);  
  23.         dpd.setValue("其它部",25);  
  24.           
  25.         JFreeChart jfc=ChartFactory.createPieChart3D  
  26.                 ("某公司人员组织结构图",dpd,true,true,false);  
  27.           Font font = new Font("黑体", 1, 20);  
  28.             
  29.           jfc.getTitle().setFont(font);  
  30.             
  31.           ((PiePlot)jfc.getPlot()).setLabelFont(font);  
  32.             
  33.         /*  PiePlot pieplot = (PiePlot)jfc.getPlot();  
  34.           pieplot.setLabelFont(font);  */  
  35.             
  36.          jfc.getLegend().setItemFont(new Font("宋体",2,18));  
  37.                   
  38.                   
  39.          ChartFrame chartFrame=new ChartFrame("s司人员结构图s",jfc);  
  40.           
  41.           
  42.           
  43.         chartFrame.pack();  
  44.           
  45.     //chartFrame.setFont(font);  
  46.           
  47.         chartFrame.setVisible(true);  
  48.           
  49.   
  50.     }  
  51.   
  52. }  



柱图

[html]  view plain  copy
  1. package jFreeTest;  
  2.   
  3. import java.awt.Font;  
  4.   
  5. import javax.swing.JPanel;  
  6.   
  7.   
  8.   
  9. import org.jfree.chart.ChartFactory;  
  10. import org.jfree.chart.ChartPanel;  
  11. import org.jfree.chart.JFreeChart;  
  12. import org.jfree.chart.axis.CategoryAxis;  
  13. import org.jfree.chart.plot.CategoryPlot;  
  14. import org.jfree.chart.plot.PlotOrientation;  
  15. import org.jfree.chart.title.TextTitle;  
  16. import org.jfree.data.category.CategoryDataset;  
  17. import org.jfree.data.category.DefaultCategoryDataset;  
  18. import org.jfree.ui.ApplicationFrame;  
  19.   
  20. public class Test2 extends ApplicationFrame {  
  21.   
  22.     //构造函数  
  23.     public Test2(String title) {  
  24.         super(title);  
  25.           
  26.         //将面版存放到 内容面版中  
  27.         this.setContentPane(createJPanel());  
  28.           
  29.     }  
  30.   
  31.   
  32.     //创建数据集category 分类  
  33.     public static CategoryDataset createDataset(){  
  34.         DefaultCategoryDataset category =new DefaultCategoryDataset();  
  35.         category.setValue(20, "管理人员a", "管理人员");  
  36.         category.setValue(30, "IT人员b", "IT人员");  
  37.         category.setValue(50, "人事人员c", "人事人员");  
  38.         category.setValue(20, "财务人员d", "财务人员");  
  39.         return category;  
  40.     }  
  41.       
  42.       
  43.     //创建JFreeChart 图对象  
  44.     public static JFreeChart createJFreeChart(CategoryDataset  category){  
  45.           
  46.     //构建JFreeChart 对象  
  47.     JFreeChart jfreeChart=ChartFactory.createBarChart3D("hello", "人员分布","人员数量",   
  48.             category, PlotOrientation.VERTICAL, true, true,false);    
  49.       
  50.     //对值重置  
  51.     jfreeChart.setTitle(new TextTitle("某公司人员图",  
  52.             new Font("黑体",Font.BOLD +Font.ITALIC, 20)));  
  53.     //分类图  
  54.     CategoryPlot plot=(CategoryPlot)jfreeChart.getPlot();  
  55.       
  56.       
  57.     //领域轴  
  58.     CategoryAxis axis=plot.getDomainAxis();  
  59.     axis.setLabelFont(new Font("宋体",Font.PLAIN,18));  
  60.     axis.setTickLabelFont(new Font("宋体",Font.PLAIN,15));  
  61.       
  62.     //设置Y坐轴  
  63.     plot.getRangeAxis().setLabelFont(new Font("宋体",Font.BOLD,18));//设置y轴坐标上的标题的字体  
  64.     //设置y轴坐标上的字体  
  65.     plot.getRangeAxis().setTickLabelFont(new Font("宋体",Font.BOLD,15));  
  66.     //lagend  
  67.     jfreeChart.getLegend().setItemFont(new Font("宋体",Font.BOLD,12));  
  68.       
  69.       
  70.     return jfreeChart;  
  71.           
  72.     }  
  73.       
  74.       
  75.     /**  
  76.      * 面版 存放jfree cahrt  
  77.      * @param args  
  78.      */  
  79.     public static JPanel createJPanel(){  
  80.         //创建JFreeChart  
  81.         JFreeChart jfc=createJFreeChart(createDataset());  
  82.           
  83.         JPanel jnew ChartPanel(jfc);  
  84.           
  85.         return j;  
  86.     }  
  87.       
  88.       
  89.       
  90.     public static void main(String[] args) {  
  91.     //执行 生成类的实列  
  92.         Test2 test2=new Test2("hello world...");  
  93.         test2.pack();  
  94.         test2.setVisible(true);  
  95.       
  96.     }  
  97.   
  98. }  


生成图片

:

[html]  view plain  copy
  1. package jFreeTest;  
  2.   
  3. import java.awt.Font;  
  4. import java.io.FileOutputStream;  
  5. import java.io.OutputStream;  
  6.   
  7. import org.jfree.chart.ChartFactory;  
  8. import org.jfree.chart.ChartFrame;  
  9. import org.jfree.chart.ChartUtilities;  
  10. import org.jfree.chart.JFreeChart;  
  11. import org.jfree.chart.plot.PiePlot;  
  12. import org.jfree.chart.title.TextTitle;  
  13. import org.jfree.data.general.DefaultPieDataset;  
  14.   
  15. public class ImageTest3 {  
  16.       
  17.     //Dataset  
  18.     public static DefaultPieDataset createPinDateset(){  
  19.         DefaultPieDataset dpd=new DefaultPieDataset();  
  20.         dpd.setValue("市场部",15);  
  21.         dpd.setValue("IT部",20);  
  22.         dpd.setValue("财务部",120);  
  23.         dpd.setValue("其它部",125);  
  24.         return dpd;  
  25.           
  26.     }  
  27.   
  28.     /**  
  29.      * @param args  
  30.      */  
  31.     public static void main(String[] args) throws Exception  
  32.     {  
  33.      JFreeChart jfc=ChartFactory.createPieChart3D("公司部门统计图", createPinDateset(),   
  34.              true, true, false);  
  35.      //设置 标题字体  
  36.      jfc.getTitle().setFont(new Font("微软雅黑",Font.BOLD,25));  
  37.        
  38.      //polt 图  
  39.      PiePlot pp=(PiePlot) jfc.getPlot();  
  40.      pp.setLabelFont(new Font("微软雅黑",Font.BOLD,15));  
  41.        
  42.      //图例字体  
  43.      jfc.getLegend().setItemFont(new Font("微软雅黑",Font.BOLD,15));  
  44.        
  45.     /* ChartFrame cf=new ChartFrame("",jfc);  
  46.      cf.pack();  
  47.      cf.setVisible(true);*/  
  48.        
  49.      //输出图片  
  50.      OutputStream os=new FileOutputStream("Company.jpg");  
  51.      //图表 实用工具  
  52.      ChartUtilities.writeChartAsJPEG(os, jfc, 1000, 800);  
  53.        
  54.      os.close();  
  55.   
  56.     }  
  57.   
  58. }  

和strtus2整合,在项目中应用:

页面代码:

[html]  view plain  copy
  1. <%@ page language="java" contentType="text/html"    pageEncoding="UTF-8"%>  
  2. <%@ taglib prefix="s" uri="/struts-tags" %>  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  4. <html>  
  5. <head>  
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  7. <title>Insert title here</title>  
  8. </head>  
  9. <body>  
  10. <h1>Chart Test</h1>  
  11. <s:form action="showTick.action"  method="post">  
  12. <s:checkbox name="interest" label="蓝球" fieldValue="nanqiu" labelposition="left"/>  
  13. <s:checkbox name="interest" label="足球" fieldValue="zhuqiu" labelposition="left"/>  
  14. <s:checkbox name="interest" label="羽毛球" fieldValue="ymq" labelposition="left"/>  
  15. <s:checkbox name="interest" label="游泳" fieldValue="youyong" labelposition="left"/>  
  16. <s:submit value="提交"/>  
  17. </s:form>  
  18. </body>  
  19. </html>  

struts.xml文件:

[html]  view plain  copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE struts PUBLIC  
  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"  
  4.     "http://struts.apache.org/dtds/struts-2.3.dtd">  
  5.       
  6.     <struts>  
  7.     <package name="default"  extends="jfreechart-default, jasperreports-default">  
  8.       
  9.     <action name="showTick" class="strutsAction.ShowTick">  
  10.     <result name="success"  type="chart">  
  11.      <param name="width">800</param>  
  12.      <param name="height">600</param>   
  13.      </result>  
  14.        
  15.     </action>  
  16.       
  17.     <!-- jasperReport -->  
  18.     <action name="showReport" class="strutsAction.ShowRepeort">  
  19.     <result name="success" type="jasper">  
  20.     <param name="location">test.jasper</param>  
  21.     <param name="dataSource">list</param>  
  22.     <param name="format">PDF</param>  
  23.       
  24.     </result>  
  25.     </action>  
  26.       
  27.     </package>  
  28.       
  29.     </struts>  

action实现类代码:

[html]  view plain  copy
  1. package strutsAction;  
  2.   
  3. import java.awt.Font;  
  4. import java.util.List;  
  5. import java.util.Map;  
  6.   
  7.   
  8. import org.jfree.chart.ChartFactory;  
  9. import org.jfree.chart.JFreeChart;  
  10. import org.jfree.chart.axis.CategoryAxis;  
  11. import org.jfree.chart.axis.CategoryLabelPositions;  
  12. import org.jfree.chart.plot.CategoryPlot;  
  13. import org.jfree.chart.plot.PlotOrientation;  
  14. import org.jfree.chart.title.TextTitle;  
  15. import org.jfree.data.category.CategoryDataset;  
  16. import org.jfree.data.category.DefaultCategoryDataset;  
  17.   
  18. import com.opensymphony.xwork2.ActionContext;  
  19. import com.opensymphony.xwork2.ActionSupport;  
  20.   
  21. public class ShowTick extends ActionSupport {  
  22.       
  23.     //jfreecha  
  24.     private JFreeChart chart;  
  25.   
  26.     public JFreeChart getChart() {  
  27.       
  28.         chart=ChartFactory.createBarChart("兴趣统计结果", "项目","结果",  
  29.                 this.createDatasetss(),  
  30.                 PlotOrientation.VERTICAL,   
  31.                 true,   
  32.                 true,  
  33.                 false);  
  34.           
  35.           
  36.         if(null==chart){  
  37.             throw new RuntimeException("chart怎么会是空呢,你大爷爷的---------");  
  38.               
  39.         }  
  40.         //设置字体  
  41.         chart.setTitle(new TextTitle("兴趣统计结果",new Font("宋体",Font.BOLD,20)));  
  42.           
  43.         //x  
  44.         CategoryPlot cp=(CategoryPlot)chart.getPlot();  
  45.         CategoryAxis axis=cp.getDomainAxis();  
  46.         axis.setLabelFont(new Font("宋体",Font.BOLD,18));  
  47.         axis.setTickLabelFont(new Font("宋体",Font.BOLD,15));  
  48.           
  49.         //设置文字倾多少度  
  50.         axis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);  
  51.           
  52.         //y  
  53.         cp.getRangeAxis().setLabelFont(new Font("宋体",Font.BOLD,18));  
  54.         cp.getRangeAxis().setTickLabelFont(new Font("宋体",Font.BOLD,15));  
  55.         //legend  
  56.         chart.getLegend().setItemFont(new Font("宋体",Font.BOLD,20));  
  57.           
  58.         return chart;  
  59.     }  
  60.   
  61.       
  62.   
  63.     private List<String> interest;  
  64.       
  65.     public List<String> getInterest() {  
  66.         return interest;  
  67.     }  
  68.   
  69.     public void setInterest(List<String> interest) {  
  70.         this.interest = interest;  
  71.     }  
  72.   
  73.     @Override  
  74.     public String execute() throws Exception {  
  75.           
  76.         return SUCCESS;  
  77.     }  
  78.       
  79.     ////计算投票 并入入aplication  
  80.     public void interestResult(List<String> interests){  
  81.         ActionContext ac=ActionContext.getContext();  
  82.         Map mp=ac.getApplication();  
  83.       
  84.         for(String str:interests){  
  85.           
  86.         if(!mp.containsKey(str)){  
  87.             mp.put(str, 1);  
  88.         }else{  
  89.             mp.put(str, (Integer)mp.get(str)+1);  
  90.         }  
  91.         }  
  92.     }  
  93.       
  94.     //获取数据集  
  95.     public CategoryDataset createDatasetss(){  
  96.       
  97.           
  98.     DefaultCategoryDataset dcd=new DefaultCategoryDataset();  
  99.     //计算投票  
  100.     this.interestResult(this.getInterest());  
  101.       
  102.       
  103.     //获取application  
  104.     ActionContext ac=ActionContext.getContext();  
  105.     Map map =ac.getApplication();  
  106.       
  107.     //设置值  
  108.     //System.out.println("1:"+(Integer)map.get("nanqiu"));  
  109.     dcd.setValue((Integer)map.get("nanqiu"), "蓝","蓝球");  
  110.     dcd.setValue((Integer)map.get("zhuqiu"), "足","足球");  
  111.     dcd.setValue((Integer)map.get("ymq"), "羽毛","羽毛球");  
  112.     dcd.setValue((Integer)map.get("youyong"), "游泳","游泳");  
  113.       
  114.     /*dcd.setValue(5,"","蓝球");  
  115.     dcd.setValue(6, "","足球");  
  116.     dcd.setValue(34, "","羽毛球");  
  117.     dcd.setValue(21, "","游泳");*/  
  118.           
  119.     return dcd;  
  120.     }  
  121.       
  122.       
  123.   
  124. }  





















http://blog.csdn.net/liangrui1988/article/details/9375189

你可能感兴趣的:(Java报表工具)