`
leon.s.kennedy
  • 浏览: 110545 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

JasperReport JavaBean作为数据源简单例子

 
阅读更多

1.所需jar包

 ireport的安装目录下:

iReport-3.7.3ireportmodulesext(如果为3.7.3):

jasperreports-3.7.3.jar
iText-2.1.7.jar
groovy-all-1.5.5.jar
commons-digester-1.7.jar
commons-collections-3.2.1.jar
commons-beanutils-1.8.2.jar

2.中文问题

需要iText-verson.jar和iTextAsia.jar

①设置字体为宋体

②pdf embedded 勾上

③设置 pdf encoding 为 UniGB-UCS2-H

④设置Pdf font name is now .. 为 STSong-Light

 

3.如果使用javabean为数据源,则要写一个继承JRDataSource的数据源类,如

public class RepairContactMenuDataSource implements JRDataSource {
        
    public RepairContactMenuDataSource(List datas) {
        this.datas = datas;
    }

    private List datas = null ;
    private int index = -1 ;
    
    public Object getFieldValue(JRField field) throws JRException {
     RepairContactMenu repairContactMenu = (RepairContactMenu)this.datas.get(index);
    
     Object value = null;
     String fieldName = field.getName();  
       if ("serialNum".equals(fieldName)) {  
           if(repairContactMenu.getSerialNum()!=null){
               value = repairContactMenu.getSerialNum();
           } else{
               value = "";
           }
       } else if ("date".equals(fieldName)){  
           if(repairContactMenu.getDate()!=null){
               SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
               value = sdf.format(repairContactMenu.getDate());
           } else {
               value = "";
           }
       } else if("reason".equals(fieldName)){
           if(repairContactMenu.getReason()!=null){
               value = repairContactMenu.getReason();
           } else {
               value = "";
           }
       }        
       repairContactMenu = null ; 
       return value;
    }

    public boolean next() throws JRException {
        index ++;
        return index < datas.size();
    }

}
4.可以写一个测试类,如下

public class RepairContactMenuDataSourceProvider extends JRAbstractBeanDataSourceProvider {

    public RepairContactMenuDataSourceProvider(Class beanClass) {
        super(beanClass);
    }

    @Override
    public JRDataSource create(JasperReport arg0) throws JRException {
        List list = new ArrayList();
        RepairContactMenu repairContactMenu =  new RepairContactMenu();
        repairContactMenu.setSerialNum("2010");
        list.add(repairContactMenu);
        return new JRBeanCollectionDataSource(list);
    }

    @Override
    public void dispose(JRDataSource arg0) throws JRException {

    }
   
    public static void main(String[] args) throws JRException{
        List list = new ArrayList();
        RepairContactMenu repair = new RepairContactMenu();
        repair.setSerialNum("4444");
        repair.setDate(new Date());
        repair.setContent("dfdfdf");
        repair.setDepartmentView("dfdfdf");
        repair.setReason("是由");
          
        list.add(repair);
        String filename = "F:\*\report2.jasper";
        JasperPrint print = JasperFillManager.fillReport(filename, null, new RepairContactMenuDataSource(list));
        JRExporter exporter = new JRPdfExporter();
        exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME,    "F:\*.pdf");
        exporter.setParameter(JRExporterParameter.JASPER_PRINT, print);
        exporter.exportReport();
    }

}

4.Servlet类

使用了spring的mvc

@Controller
public class ExportReportContactMenuServlet {
    @Autowired
    private RepairContactMenuService repairContactMenuService;
   
    @RequestMapping("/excel/exportToPdf.do")
     protected void export(HttpServletRequest request, HttpServletResponse response)
        throws IOException, BiffException, WriteException, JRException {        
        String repairContactMenuId = request.getParameter("id");
        RepairContactMenu repairContactMenu = (RepairContactMenu)repairContactMenuService.loadById(repairContactMenuId);
        response.setContentType("application/pdf");
        response.setCharacterEncoding("UTF-8");
        String jrFilePath = request.getSession().getServletContext().getRealPath("/report/report2.jasper");
        JasperReport report = (JasperReport)JRLoader.loadObject(jrFilePath);
        Map parameters = new HashMap();
        String imagePath = request.getSession().getServletContext().getRealPath("/report/isAudited.gif");
        parameters.put("image_uri", imagePath);
        parameters.put("isAudited", isAudited);
        List repairContactMenus = new ArrayList();
        repairContactMenus.add(repairContactMenu);
        byte[] bytes = JasperRunManager.runReportToPdf(report, parameters, new RepairContactMenuDataSource(repairContactMenus));
        response.setContentLength(bytes.length);
        ServletOutputStream outputStream = response.getOutputStream();
        outputStream.write(bytes, 0, bytes.length);
        outputStream.flush();
        outputStream.close();
    }
}

 

5.JasperReport基本概念

 字段,参数和变量:Fields,Parameters,Variable;

 报表结构

 Title Band:在整个报表的第一页的最上面部分显示,其他页面不会出现此band内容;

 pageHeader Band:其内容会在整个报表中的每一个页面中出现,显示在页面的上部,如果是报表的第一页其内容将显示在Title Band下面,除首页之外的所有页面中pageHeader内容将显示在页面的最上端;
 pageFooter Band:显示在所有页面的最下端;
 Detail Band:报表内容段,是报表设计中需要重复出现的内容,在每页都会出现;9 c- q4 E: V" p. w4 g1 R6 k. ~
 columnHeader Band:针对Detail Band的表头段,一般情况下在这个段中画报表的表头;$ g  W* H' ^' t/ m* Z/ a
 columnFooter Band:针对Detail Band的表尾段;9 b9 N7 {) y! H. P( Z
 Summary Band:表格的合计段,出现在整个报表的最后一页中的Detail band的后面,一般用来统计报表中的某一个或某几个 

 

http://blog.sina.com.cn/s/blog_8020e41101015p4c.html

0
2
分享到:
评论

相关推荐

    jasperReport自定义javabean数据源实例

    在实际开发中,我们经常会遇到需要自定义数据源的情况,这时JasperReport提供了使用JavaBean作为数据源的功能。本实例将详细介绍如何通过自定义JavaBean数据源来生成报表。 首先,理解JavaBean是一种符合特定规范的...

    jasperreport+ireport创建javaBean多数据源报表

    **javaBean作为数据源** 在jasperreport中,JavaBeans可以作为数据源来填充报表。JavaBean是一种符合JavaBeans规范的类,通常包含公共属性和getter/setter方法,用于封装数据。将JavaBean用作数据源时,...

    jasperreport学习 之 javabean封装成list作为数据源.pdf

    JasperReport学习之JavaBean封装成List作为数据源 本文档主要介绍了使用JavaBean封装成List作为JasperReport的数据源的方法。JasperReport是一款流行的开源报表工具,能够生成各种格式的报表,而JavaBean是一个Java...

    JasperReport中使用多个数据源的方法

    ### JasperReport中使用多个数据源的方法详解 #### 场景背景 在报表开发过程中,有时我们需要在一个报表中展示不同来源的数据。例如,在同一份报告中同时呈现交叉表和饼状图,而这两部分数据可能源自不同的数据库表...

    ireportjasperreport开源报表中使用javabean作为数据源的详细实.docx

    ### 使用JavaBean作为数据源在iReport+JasperReport中的详细实践 #### 一、简介 iReport 和 JasperReport 是一款强大的开源报表工具,广泛应用于Web应用开发中,支持多种数据源(如数据库、JavaBean等)以及多种...

    使用JavaBean构造JasperReport子报表

    2. **JavaBean作为数据源**:在JasperReport中,JavaBean可以用作数据模型,将业务数据封装在其中。通过getter和setter方法,JasperReport可以从JavaBean对象中获取数据并填充到报告模板中。 3. **子报表...

    图示ireport中使用javabean作数据源开发基于jasperreports报表过程

    在这个过程中,我们将深入探讨如何在`iReport`中使用`JavaBean`作为数据源来开发基于`JasperReports`的报表。 首先,我们需要了解`JavaBean`。`JavaBean`是一种符合特定规范的Java类,通常用于封装数据并提供公共...

    ireport中table使用javaBean数据源

    本知识点主要探讨的是如何在iReport中使用JavaBean作为数据源来填充表格(Table)组件。我们将深入理解这个过程,并结合提供的资源进行详细阐述。 1. **JavaBean数据源的原理** JavaBean是一种符合特定规范的Java...

    Jasperreport+iReport简单示例

    通过使用JavaBean作为数据源,可以方便地将业务对象的数据映射到报表中,实现灵活的报表设计和数据呈现。在实际项目中,可以根据需求定制报表模板,生成各种格式的报表,以满足业务分析和决策支持的需求。

    jasperreport一个子报表的例子

    `Head.java`, `Middle.java` 和 `Footer.java`可能是主报表的各个部分对应的Java类,它们可能包含了报表的业务逻辑,如数据源处理、参数设置等。`ServiceItem.java`和`ConfirmationNoteDTO.java`可能是数据模型类,...

    jasperreport创建多个List数据源报表 通多个detail实现多个table效果

    jasperreport创建多个List数据源报表 通多个detail实现多个table效果,简单 快捷

    JasperReport报表设计总结

    而如果需要更灵活的数据处理,例如根据用户权限过滤数据,使用JavaBean集合作为数据源更为合适。数据填充涉及到实现JRDataSource接口,通过next()方法控制数据指针,getFieldValue()方法获取并填充字段值。 报表的...

    JasperReport 中交叉报表指南

    JasperReport 中交叉报表的生成需要遵循一定的步骤,包括设置 subDataSets 数据源、填写数据源名称和 SQL 语句、创建交叉报表、设置行字段和列字段、设置详细信息、设置参数、设置数据源和连接、设置 Crosstab 参数...

    JasperReport动态报表归并行数据

    如果数据行数不确定,可以使用Java集合作为数据源,例如List或Map,这样可以轻松适应不同数量的行数据。 3. **归并行数据**: 归并行数据通常是指将多行数据合并成一行,以减少报表的行数。这可以通过JasperReport...

    jasperReport测试例子

    "jasperReport测试项目(含报表设计文件)"这部分可能包含已经设计好的报表模板(.jrxml文件),它们是XML格式的,描述了报表的结构、样式和数据源。此外,还可能包含用于测试的Java代码,演示了如何加载报表模板,...

    一个完整的jasperreport+myeclipse+struts2例子

    4. 分析项目结构,了解JasperReport模板的创建和数据源的设置。 5. 运行项目,查看Struts2如何调用JasperReport生成报表。 6. 调整报表设计或业务逻辑,以适应不同的需求。 通过这个实例,你可以深入理解...

    Struts2+JasperReport报表应用

    Struts2和JasperReport的整合是Web应用程序中创建动态报表的一种常见方法。JasperReport是一个功能强大的...虽然这个示例仅使用JavaBean作为数据源,但在实际项目中,可以根据需要扩展到更复杂的数据连接和处理逻辑。

    jasperReport详细教程及例子

    - **数据源**: JasperReport支持JDBC连接,可以对接各种数据库;同时也能处理XML、CSV等结构化数据。 - **表达式语言**: 使用JasperReport的内置脚本语言JRExpression,可以在报表中执行计算、条件判断等操作。 ###...

Global site tag (gtag.js) - Google Analytics