当前位置:编程学习 > asp >>

jasperreport报表的简易demo

[java] 
<pre name="code" class="java"><pre name="code" class="java"><span style="font-family:Arial,Helvetica,sans-serif; font-size:12px">最近项目经理安排任务学习jasperreport报表的设计与制作,根据提供的资料以及在网上的学习,自己实现了一个可以通过外部传入数据下载excel的报表,</span></pre><pre name="code" class="java">因为还在初学阶段,数据源暂时是在程序中传入,还没通过数据库或者javabean传入,接下来的时间里慢慢深入。</pre><pre name="code" class="java">首先是在IReport软件里设计好自己的报表图,我设计了一个很简单的报表,其实报表设计最重要的是其核心的几个过程</pre><pre name="code" class="java"><img src="http://write.blog.csdn.net/postedit/12967677" alt="">  
</pre><pre name="code" class="java">设计报表,数据导入,输出报表</pre></pre><pre name="code" class="java"></pre>  
[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 outputFileName = "dataReport.xlsx";  
        Map<String, Object> dataMap = new HashMap<String, Object>();  
        dataMap.put("name", "张三");  
        Collection<Map<String, ?>> dataMapList = new ArrayList<Map<String,?>>();  
        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。这个类中主要是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 outputStream =null;  
      
            outputStream = new BufferedOutputStream(res.getOutputStream());  
              
            this.exportFile(res,print,outputFileName,outputStream);  
            outputStream.flush();  
          &nb
补充:web前端 , JavaScript ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,