zoukankan      html  css  js  c++  java
  • jasper使用table组件设计复杂的表头

    1.1 设计报表模板

    1.1.1 新建模板DemoReport5.jrxml,去掉不需要的Band,保留Title,Page Header,Detail 1 , PageFooter。将组件Table拖入到Detail1 中,跳出Dataset窗口。选择 Create .. ,然后Next

     

    1.1.2 给Dataset命名。选择 Createnew dateset ... ,然后Next

     

     

     

    1.1.3 只保留Column Header,然后 Finish

     

    1.1.4 点击Detail中的Table组件进入到Table界面中。

     

    1.1.5 在Column Header中右键Column1 选择Create Column After,生成4个Column

     

    1.1.6 一般表头都是 合并列的复杂表头。选择Column1 右键 -》 Group Columns

     

    在Columns[1]中的Column1右键Create Column after ,显示如下:

     

    将其他三个也如此操作

     

    1.1.7 将组件Text Field 拖入表格中,并设置表头名

     

    1.1.8 在dateset1中新建Field属性,并拖入到Table的Detail中,设置字体样式(这里自定义命名Filed,且注意类型)

     

    1.1.9 返回到Main Report ,新建Fields 命名为table Data,设置Class为JRBeanCollectionDataSource,注意写全路径,新建一个Field为Date,Class为String

     

    1.1.10 点击Main Report 的Detail中的Table,显示Properties后,点击DataSet,选中Use a JRDatasource expression,将新建tableData写入。

     

    保存模板,并复制到JasperWeb项目中。

    1.2 编写Servlet注入数据源

    1.2.1 新建Fields类和ModelTableSource类如下:

     
    1. package com.jasper.bean;

    2.  
    3. public class Fields {

    4.  
    5. private String field1;

    6. private String field2;

    7. private String field3;

    8. private String field4;

    9. private String field5;

    10. private String field6;

    11. private String field7;

    12. private String field8;

    13.  
    14. //get 和 set方法省略

    15.  
    16. }

     
    1. package com.jasper.bean;

    2.  
    3. import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;

    4.  
    5. public class ModelTableSource {

    6. /**

    7. * 注入table组件的数据源

    8. */

    9. private JRBeanCollectionDataSource tableData;

    10. /**

    11. * 当前时间(查询时间)

    12. */

    13. private String date;

    14. // get和set方法省略

    15.  
    16. }

    1.2.2 新建JasperServlet5 ,doGet内容如下:

     
    1. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    2. Map<String,Object> parameters = new HashMap<String,Object>(16);

    3.  
    4. String jrxmlPath = request.getServletContext().getRealPath("/")+"/jrxml/DemoReport5.jrxml";

    5. //由jrxml文件编译后生产jasper文件的路径

    6. String jasperPath = request.getServletContext().getRealPath("/")+"/jasper/DemoReport5.jasper";

    7.  
    8. FileInputStream isRef = null;

    9. ServletOutputStream sosRef = null;

    10.  
    11. try {

    12. //编译jrxml生产jasper文件

    13. JasperCompileManager.compileReportToFile(jrxmlPath, jasperPath);

    14.  
    15. isRef = new FileInputStream(new File(jasperPath));

    16. sosRef = response.getOutputStream();

    17. //组装list数据源

    18. List<Fields> list = new ArrayList<Fields>();

    19. for(int i = 1 ; i <= 20; i++) {

    20. Fields fields = new Fields("field"+i,"field"+(i+1),"field"+(i+2),"field"+(i+3),"field"+(i+4),"field"+(i+5),"field"+(i+6),"field"+(i+7));

    21. list.add(fields);

    22. }

    23. ModelTableSource mts = new ModelTableSource();

    24. mts.setDate(new SimpleDateFormat("yyyy-MM-dd").format(new Date()));

    25. mts.setTableData(new JRBeanCollectionDataSource(list));

    26. List<ModelTableSource> mlist = new ArrayList<ModelTableSource>();

    27. mlist.add(mts);

    28. //new JRBeanCollectionDataSource(list) 以javaBean为数据源注入报表数据

    29. JasperRunManager.runReportToPdfStream(isRef, sosRef, parameters, new JRBeanCollectionDataSource(mlist));

    30. response.setContentType("application/pdf");

    31. } catch (JRException e) {

    32.  
    33. e.printStackTrace();

    34. }finally {

    35. sosRef.flush();

    36. sosRef.close();

    37. }

    38. }

    1.2.3 启动tomcat并访问

  • 相关阅读:
    PHP面试题4
    php面试题2
    php基础面试题1
    mysql添加索引命令
    lnmp初步学习知识整理
    代码运行的自由
    Lein droid
    关于Domain Sepcific Lang
    JavaScript倒计时类
    三国小记
  • 原文地址:https://www.cnblogs.com/xing-nb/p/12192426.html
Copyright © 2011-2022 走看看