jasperreport报表的简易demo -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【www.unjs.com - 电脑资料】

    [java]

   

因为还在初学阶段,数据源暂时是在程序中传入,还没通过数据库或者javabean传入,接下来的时间里慢慢深入,

jasperreport报表的简易demo

首先是在IReport软件里设计好自己的报表图,我设计了一个很简单的报表,其实报表设计最重要的是其核心的几个过程
<img src="http://write.blog.csdn.net/postedit/12967677" alt=""></p><p>    
设计报表,数据导入,输出报表

    [java]

    第一个程序是service里的下载代码

    [java]

    @Service("reportService")

    @Path("/report")

    public class ReportService {

    @Autowired

    private ICommonDao dao;

    @Path("download")

    @Produces(MediaType.TEXT_PLAIN)

    @Transactional

    public String downloadReport(@Context HttpServletRequest req , @Context HttpServletResponse res) throws Exception{

    String designFilePath = req.getSession().getServletContext().getRealPath("/jasper") +

    File.separator + "reportTest.jrxml";

    File designFile = new File(designFilePath);

    if(designFile.exists()){

    DataReportProcess reportProcess = new DataReportProcess();

    reportProcess.process(req, res, designFile);

    }

    return "success";

    }

    }

    这段代码里涉及DataReportProcess类

    [java]

    public class DataReportProcess extends XLSReportProcess{

    /**

    *从模板文件编译获得jasperReport对象

    *@return JasperReport对象 jasperReport

    * @throws JRException

    */

    private JasperReport getJasperReport(File designFile) throws Exception{

    JasperReport jasperReport = null;

    JasperDesign design = JRXmlLoader.load(designFile);

    jasperReport = JasperCompileManager.compileReport(design);

    return jasperReport;

    }

    public void process(HttpServletRequest req , HttpServletResponse res, File designFile) throws Exception{

    String utputFileName = "dataReport.xlsx";

    Map dataMap = new HashMap();

    dataMap.put("name", "张三");

    Collection> dataMapList = new ArrayList>();

    dataMapList.add(dataMap);

    JRMapCollectionDataSource dataSource = new JRMapCollectionDataSource(dataMapList);

    JasperReport jasperReport = this.getJasperReport(designFile);

    JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,null,dataSource);

    this.exportWebReport(ReportProcess.Type.xlsx, res, jasperPrint , outputFileName);

    }

    }

    这里面的数据源接口用的是JRMapCollectionDataSource,现在是写死的key value,

电脑资料

jasperreport报表的简易demo》(https://www.unjs.com)。这个类中主要是jasperrepor中涉及到的一些API

    JasperReport核心API

    1. JRXmlLoader(xml加载器)

    里面有load方法用来加载*.jrxml文件 返回jasperDesign对象

    2.JRcompile(接口)

    里面定义了方法接受参数返回 jasperReport对象

    3.JasperCompileManager(编译管理器)

    提供了一些方法用来编译Report成文件的

    JasperReport jasperReport = JasperCompileManager.compileReport(design);

    4.JasperFillManager(填充管理器)

    主要用来把report填充到文件里面

    JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, reportParams, resultSetDataSource);

    5.JasperPrintManager(打印管理)

    主要是把JasperPrint对象(相关的数据)打印到pdf.xml等文件中去

    6.JasperExportManager(导出管理器)

    主要是把JasperPrint对象(相关的数据)导出到pdf.xml等文件中去

    最后一个时输出报表函数

    [java]

    @Override

    public void exportWebReport(Type type, HttpServletResponse res, JasperPrint print, String outputFileName) throws Exception{

    if(type!=null&&type.equals(ReportProcess.Type.xlsx)){

    //2007 excel以上

    res.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");

    }else{

    res.setContentType("application/vnd.ms-excel");

    }

    //解决中文文件名并设置文件名

    if(outputFileName!=null && !outputFileName.isEmpty()){

    res.setHeader("charset","ISO8859-1");

    res.setHeader("Content-Disposition", "attachment;filename=\"" + new String(outputFileName.getBytes(), "ISO8859-1") + "\"");

    }

    BufferedOutputStream utputStream =null;

    utputStream = new BufferedOutputStream(res.getOutputStream());

    this.exportFile(res,print,outputFileName,outputStream); 

最新文章