struts2 + ireport

来源:互联网 发布:委内瑞拉中国布局知乎 编辑:程序博客网 时间:2024/06/02 00:49
3:struts2与jfreeChart的整合
package com.aptech.action;

import java.util.*;

import org.jfree.data.*;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.*;
import org.jfree.chart.*;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.CategoryLabelPosition;
import org.jfree.chart.axis.CategoryLabelPositions;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.*;

import java.awt.Font;
import java.awt.geom.Ellipse2D.Float;
import org.jfree.chart.title.TextTitle;
import org.jfree.chart.title.LegendTitle;

import com.opensymphony.xwork2.ActionSupport;

public class JFreeChartAction extends ActionSupport{

    

    public JFreeChart getChart() {
        
        JFreeChart chart = ChartFactory.createBarChart("周报表", "时间", "销售额", getDataset(), PlotOrientation.VERTICAL, true, true, true);
        
        chart.getTitle().setFont(new Font("黑体",Font.BOLD,22));
        
        //body
        CategoryPlot plot = (CategoryPlot) chart.getPlot();
        //Y轴定义
        NumberAxis y = (NumberAxis) plot.getRangeAxis();    
        y.setLabelFont(new Font("黑体",Font.BOLD,18));
        //X轴定义
        CategoryAxis x = plot.getDomainAxis();
        x.setLabelFont(new Font("宋体",Font.BOLD,18));
        x.setCategoryLabelPositions(CategoryLabelPositions.UP_45);
        //说明
        LegendTitle legend = chart.getLegend();
        legend.setItemFont(new Font("黑体",Font.BOLD,14));
        return chart;
        
        
    }
    
    
    
    //定义数据集
    public DefaultCategoryDataset getDataset(){
        DefaultCategoryDataset categoryDataset = new DefaultCategoryDataset();
        long sale =100;
        categoryDataset.setValue(sale, "星期一", "1");
        categoryDataset.setValue(sale+100, "星期二", "2");
        categoryDataset.setValue(sale+200, "星期三", "3");
        categoryDataset.setValue(sale+300, "星期四", "4");
        categoryDataset.setValue(sale+400, "星期五", "5");
        categoryDataset.setValue(sale+500, "星期六", "6");
        categoryDataset.setValue(sale+600, "星期日", "7");
        return categoryDataset;
        
    }
}


2:ireport的工作原理

    title:第一页只显示一次
    pageHeader:每个页面出现一次
    columnHeader:每个表格出现一次
    detail:可以出现n次
    columnFooter:每个表格出现一次
    pateFooter:每个页面出现一次
    summarry:最后一页只显示一次


    ireport给定的一报表编辑器,通过编辑器可以定义报表的格式,设置paramer(Map)、list的值
    编译后生成一个以jasper结尾二进制文件,通过IReport提供的相关类
    加载jasper、paramter(Map)、list 生成一个PDF或Excell文件
将jasper转化为pdf文件:
    JRBeanCollectionDataSource:加载list信息
    byte[] btes=JasperRuManager.runReportToPdf(jasper文件,parameter,JRBeanCollectionDataSource ds)
    如果要通过servlet显示pdf文件
        response.setContentType("application/pdf");
将japer转化为excel文件
    JRBeanCollectionDataSource:封状集合信息
    JasperPrint jasperPrint = JasperFillManager.fillReport(TestExcel.class.getResourceAsStream("reportpdf.jasper"),map,jrDs1);
    ByteArrayOutputStream oStream = new ByteArrayOutputStream();
    //excel的输出对象
    JRXlsExporter exporter = new JRXlsExporter();      
    exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
    exporter.setParameter(JRExporterParameter.OUTPUT_STREAM,oStream);    
    exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS,Boolean.TRUE); // 删除记录最下面的空行
    exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET,Boolean.FALSE);// 删除多余的ColumnHeader
    exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND,Boolean.FALSE);// 显示边框
    //产生一个xls字节流
    exporter.exportReport();
    //写出到一个excell文件中
    PrintStream ps=new PrintStream(new FileOutputStream("c:/a.xls"));
    ps.write(oStream.toByteArray());
解决中文问题
    在ireport编辑器对应的lib目录下加入如下类包:
        itext-2.0.4.jar
        iTextAsian.jar
        iTextAsianCmaps.jar
    在格式化-->报表字型-->加入一种字体样式
    Font Name 宋体
    PDF Font Name:STSong-Light
    PDF Encodine:H 简体中文

2:struts2与ireport的整合
package com.aptech.action;

import java.util.*;

import net.sf.jasperreports.engine.JasperCompileManager;

import org.apache.struts2.ServletActionContext;
import org.jfree.data.*;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.*;
import org.jfree.chart.*;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.CategoryLabelPosition;
import org.jfree.chart.axis.CategoryLabelPositions;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.*;

import java.awt.Font;
import java.awt.geom.Ellipse2D.Float;
import java.io.File;

import org.jfree.chart.title.TextTitle;
import org.jfree.chart.title.LegendTitle;

import com.aptech.bean.PeopleBean;
import com.opensymphony.xwork2.ActionSupport;

public class JasperAction extends ActionSupport{

    

    private static final long serialVersionUID = 1L;

    private List<PeopleBean> myList;

    public String execute() throws Exception {
        //添加数据
        PeopleBean p1=new PeopleBean("长沙", new Integer(9), "李化", "天洒路");
        PeopleBean p2=new PeopleBean("长沙", new Integer(22), "王小样", "呆小路564");
        PeopleBean p3=new PeopleBean("南昌", new Integer(23), "王奸可", "小顺路");
        PeopleBean p4=new PeopleBean("南昌", new Integer(32), "李洒", "顺濉路");
        PeopleBean p5=new PeopleBean("武汉", new Integer(39), "张中尖", "天洒路");
        PeopleBean p6=new PeopleBean("武汉", new Integer(35), "陈主宁", "天河路564");
        myList = new ArrayList<PeopleBean>();
        myList.add(p1);
        myList.add(p2);
        myList.add(p3);
        myList.add(p4);
        myList.add(p5);
        myList.add(p6);

        try {   
            String reportSource;   
            reportSource = ServletActionContext.getServletContext()   
                    .getRealPath("/jasper/jasper_template.jrxml");   
            File parent = new File(reportSource).getParentFile();   
            JasperCompileManager.compileReportToFile(reportSource, new File(   
                    parent, "compiled_jasper_template.jasper")   
                    .getAbsolutePath());   
        } catch (Exception e) {   
            e.printStackTrace();   
            return ERROR;   
        }   

        return SUCCESS;
    }

    public List getMyList() {
        return myList;
    }

}

0 0
原创粉丝点击