struts2+ireport进行报表开发

2024-02-05 14:18

本文主要是介绍struts2+ireport进行报表开发,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

首先去官方网站将所需要的资源包下载下来。
http://jasperforge.org/

然后,通过JasperReports产生一个jrxml文件(可以生成静态的,也可以生成与数据库对应的),本例生成一个与数据库MyDatabase中表student对应的classic.jrxml文件。

  1. <?xml version="1.0" encoding="UTF-8"  ?>  
  2.  <!-- Created with iReport - A designer for JasperReports -->  
  3.  <!DOCTYPE jasperReport PUBLIC "//JasperReports//DTD Report Design//EN" "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">  
  4.  <jasperReport  
  5.           name="classic"  
  6.           columnCount="1"  
  7.           printOrder="Vertical"  
  8.           orientation="Portrait"  
  9.           pageWidth="595"  
  10.           pageHeight="842"  
  11.           columnWidth="535"  
  12.           columnSpacing="0"  
  13.           leftMargin="30"  
  14.           rightMargin="30"  
  15.           topMargin="20"  
  16.           bottomMargin="20"  
  17.           whenNoDataType="NoPages"  
  18.           isTitleNewPage="false"  
  19.           isSummaryNewPage="false">  
  20.      <property name="ireport.scriptlethandling" value="0" />  
  21.      <property name="ireport.encoding" value="UTF-8" />  
  22.      <import value="java.util.*" />  
  23.      <import value="net.sf.jasperreports.engine.*" />  
  24.      <import value="net.sf.jasperreports.engine.data.*" />  
  25.      <queryString><![CDATA[select * from student]]></queryString>  
  26.      <field name="xuehao" class="java.lang.String"/>  
  27.      <field name="userName" class="java.lang.String"/>  
  28.      <field name="userPwd" class="java.lang.String"/>  
  29.      <field name="czxt" class="java.lang.Integer"/>  
  30.      <field name="wjyl" class="java.lang.Integer"/>  
  31.      <field name="sjjg" class="java.lang.Integer"/>  
  32.          <group  name="xuehao" >  
  33.              <groupExpression><![CDATA[$F{xuehao}]]></groupExpression>  
  34.              <groupHeader>  
  35.              <band height="25"  isSplitAllowed="true" >  
  36.                  <rectangle>  
  37.                      <reportElement  
  38.                          mode="Opaque"  
  39.                          x="0"  
  40.                          y="0"  
  41.                          width="535"  
  42.                          height="25"  
  43.                          forecolor="#8080FF"  
  44.                          backcolor="#000000"  
  45.                          key="rectangle"/>  
  46.                      <graphicElement stretchType="NoStretch">  
  47.                      <pen lineWidth="0.0" lineStyle="Solid"/>  
  48.  </graphicElement>  
  49.                  </rectangle>  
  50.                  <staticText>  
  51.                      <reportElement  
  52.                          x="3"  
  53.                          y="2"  
  54.                          width="96"  
  55.                          height="23"  
  56.                          forecolor="#FFFFFF"  
  57.                          backcolor="#FFFFFF"  
  58.                          key="staticText"/>  
  59.                      <box>                   <topPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>  
  60.                      <leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>  
  61.                      <bottomPen lineWidth="0.0" lineColor="#000000"/>  
  62.                      <rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>  
  63.  </box>  
  64.                      <textElement>  
  65.                          <font size="16"/>  
  66.                      </textElement>  
  67.                  <text><![CDATA[xuehao]]></text>  
  68.                  </staticText>  
  69.          .   
  70.          .   
  71.          .   
  72.          .   
  73.                  <line direction="TopDown">  
  74.                      <reportElement  
  75.                          x="0"  
  76.                          y="3"  
  77.                          width="535"  
  78.                          height="0"  
  79.                          key="line"/>  
  80.                      <graphicElement stretchType="NoStretch"/>  
  81.                  </line>  
  82.                  <textField isStretchWithOverflow="false" pattern="" isBlankWhenNull="false" evaluati hyperlinkType="None"  hyperlinkTarget="Self" >  
  83.                      <reportElement  
  84.                          x="1"  
  85.                          y="6"  
  86.                          width="209"  
  87.                          height="19"  
  88.                          forecolor="#000000"  
  89.                          backcolor="#FFFFFF"  
  90.                          key="textField"/>  
  91.                      <box>                   <topPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>  
  92.                      <leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>  
  93.                      <bottomPen lineWidth="0.0" lineColor="#000000"/>  
  94.                      <rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>  
  95.  </box>  
  96.                      <textElement>  
  97.                          <font size="10"/>  
  98.                      </textElement>  
  99.                  <textFieldExpression   class="java.util.Date"><![CDATA[new Date()]]></textFieldExpression>  
  100.                  </textField>  
  101.              </band>  
  102.          </pageFooter>  
  103.          <summary>  
  104.              <band height="0"  isSplitAllowed="true" >  
  105.              </band>  
  106.          </summary>  
  107.  </jasperReport>  




Java的环境配置好后,就可以MyCompile.java产生PDF、XML、EXCEL等格式。

  1. /**  
  2.   * @作者 Jcuckoo  
  3.   * @创建日期 2008-12-08  
  4.   * @版本 V 1.0  
  5.   */  
  6.  public class MyCompile {   
  7.      public static void main(String[] args) throws Exception {   
  8.          //导出jasper格式   
  9.          JasperCompileManager.compileReportToFile("classic.jrxml","classic.jasper");   
  10.          System.out.println("成功编译成JasperReport文件(classic.jasper)");   
  11.          //填充时,使用数据源数据连接,产生带有数据的jasper   
  12.          JasperFillManager.fillReportToFile("classic.jasper" , null ,dbPool.getConnection());   
  13.          System.out.println("成功填充了一个报表文件(*.jrprint)");   
  14.          //填充时,即使没有使用数据源,也必须指定一个新建的JREmptyDataSource实例,而不能直接使用null   
  15.          //JasperRunManager.runReportToPdfFile("classic.jasper" , "classic.pdf" , null , new JREmptyDataSource());   
  16.          JasperRunManager.runReportToPdfFile("classic.jasper" , "classic.pdf" , null , dbPool.getConnection());   
  17.          System.out.println("成功编译成JasperReport文件Jasper2Pdf");   
  18.          //导出XML格式   
  19.          JasperExportManager.exportReportToXmlFile("classic.jrprint" , "classic.xml" , true);   
  20.          System.out.println("成功创建了一个XML文档");   
  21.          //到处excel格式   
  22.          JasperPrint jasperPrint = (JasperPrint)JRLoader.loadObject("classic.jrprint");   
  23.          JRXlsExporter exporter = new JRXlsExporter();   
  24.          //设置要导出的jasperPrint   
  25.          exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);   
  26.          exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, "classic.xls");   
  27.          exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.TRUE);   
  28.          exporter.exportReport();   
  29.          System.out.println("成功创建了一个excel文档");   
  30.          JRViewer jr = new JRViewer("classic.jrprint" , false);   
  31.          jr.setPreferredSize(new Dimension(900730));    
  32.          JFrame jf = new JFrame("报表预览");   
  33.          jf.add(jr);   
  34.          jf.pack();   
  35.          jf.setVisible(true);   
  36.      }   
  37.  }  

 



将Strut2的环境配置好后,就可以通过web的方式进行访问了。
index.jsp

  1. <body>   
  2.   <a href="htmlexport.action">html格式报表</a>   
  3.   <hr>   
  4.   <a href="pdfexport.action">pdf格式报表</a>   
  5.   <hr>   
  6.   <a href="xmlexport.action">XML格式报表</a>   
  7.    <hr>   
  8.   <a href="excelexport.action">excel格式报表</a>   
  9. </body>  



struts.xml

  1. <package name="jCuckoo" extends="jasperreports-default">//此处要注意。   
  2.     <action name="htmlexport" class="jCuckoo.JasperAction">  
  3.         <result name="success" type="jasper">  
  4.             <param name="location">jasper/classic.jasper</param>  
  5.             <param name="format">HTML</param>  
  6.             <param name="dataSource">studentList</param>  
  7.         </result>  
  8.     </action>  
  9.     <action name="pdfexport" class="jCuckoo.JasperAction">  
  10.         <result name="success" type="jasper">  
  11.             <param name="location">jasper/classic.jasper</param>  
  12.             <param name="format">PDF</param>  
  13.             <param name="dataSource">studentList</param>  
  14.         </result>  
  15.     </action>  
  16.     <action name="xmlexport" class="jCuckoo.JasperAction">  
  17.         <result name="success" type="jasper">  
  18.             <param name="location">jasper/classic.jasper</param>  
  19.             <param name="format">XML</param>  
  20.             <param name="dataSource">studentList</param>  
  21.         </result>  
  22.     </action>  
  23.     <action name="excelexport" class="jCuckoo.JasperAction">  
  24.         <result name="success" type="jasper">  
  25.             <param name="location">jasper/classic.jasper</param>  
  26.             <param name="format">XLS</param>  
  27.             <param name="dataSource">studentList</param>  
  28.         </result>  
  29.     </action>  
  30. </package>  



struts2-jasperreports-plugin-2.0.8.jar中的struts2-jasperreports-plugin-2.0.8.jar需要修改成:
该处要注意

  1. <package name="jasperreports-default" extends="struts-default">  
  2.          <result-types>  
  3.              <result-type name="jasper" class="org.apache.struts2.views.jasperreports.JasperReportsResult"/>  
  4.          </result-types>  
  5.      </package>  


JasperAction.java

  1. public class JasperAction extends ActionSupport   
  2.  {   
  3.      public List getStudentList()   
  4.      {   
  5.          StudentDAO studao=new StudentDAO();   
  6.          return studao.getAllStudent();   
  7.      }   
  8.      public String execute() throws Exception {   
  9.              return SUCCESS;   
  10.      }   
  11.  }  



StudentDAO.java

  1. public class StudentDAO {   
  2.      public StudentDAO() {   
  3.      }   
  4.      Connection conn;   
  5.      Statement st;   
  6.      ResultSet rs;   
  7.      public List getAllStudent(){   
  8.          String sql="select * from student ";   
  9.          List students=new ArrayList();   
  10.          try {   
  11.              conn=dbPool.getConnection();   
  12.              st=conn.createStatement();   
  13.              rs=st.executeQuery(sql);   
  14.              while(rs.next()){   
  15.                  Student student=new Student(rs.getString("xuehao"),   
  16.                          rs.getString("userName"),   
  17.                          rs.getString("userPwd"),   
  18.                          rs.getInt("czxt"),   
  19.                          rs.getInt("wjyl"),   
  20.                          rs.getInt("sjjg")   
  21.                  );   
  22.                  students.add(student);   
  23.              }   
  24.          } catch (SQLException e) {   
  25.              try {   
  26.                  conn.close();   
  27.              } catch (SQLException e1) {   
  28.                  e1.printStackTrace();   
  29.              }   
  30.              e.printStackTrace();   
  31.              return null;   
  32.          }   
  33.          return students;   
  34.      }   
  35.  }  



dbPool.java

  1. /**  
  2.   * @作者 Jcuckoo  
  3.   * @创建日期 2008-12-06  
  4.   * @版本 V 1.0  
  5.   */  
  6.  public class dbPool{   
  7.      private static dbPool instance = null;   
  8.      //取得连接   
  9.      public static ResultSet getAllStudent(){   
  10.          String sql="select * from student ";   
  11.          Connection conn=null;   
  12.          Statement st;   
  13.          ResultSet rs=null;   
  14.          try {   
  15.              conn=dbPool.getConnection();   
  16.              st=conn.createStatement();   
  17.              rs=st.executeQuery(sql);   
  18.              return rs;   
  19.          } catch (SQLException e) {   
  20.              try {   
  21.                  conn.close();   
  22.              } catch (SQLException e1) {   
  23.                  e1.printStackTrace();   
  24.              }   
  25.              e.printStackTrace();   
  26.              return null;   
  27.          }   
  28.      }   
  29.      public static synchronized Connection getConnection() {   
  30.          if (instance == null){   
  31.              instance = new dbPool();   
  32.          }   
  33.          return instance._getConnection();   
  34.      }   
  35.      private dbPool(){   
  36.          super();   
  37.      }   
  38.      private  Connection _getConnection(){   
  39.          try{   
  40.              String sDBDriver  = "com.microsoft.jdbc.sqlserver.SQLServerDriver";   
  41.              String sConnection   = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=MyDatabase";   
  42.              String sUser = "sa";   
  43.              String sPassword = null;   
  44.              Class.forName(sDBDriver).newInstance();   
  45.              return DriverManager.getConnection(sConnection,sUser,sPassword);   
  46.          }   
  47.          catch(Exception se){   
  48.              System.out.println(se);   
  49.              return null;   
  50.          }   
  51.      }   
  52.      //释放资源   
  53.      public static void dbClose(Connection conn,PreparedStatement ps,ResultSet rs)   
  54.      throws SQLException   
  55.      {   
  56.            rs.close();   
  57.            ps.close();   
  58.            conn.close();   
  59.        }   
  60.      }  

这篇关于struts2+ireport进行报表开发的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/681176

相关文章

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

Python使用自带的base64库进行base64编码和解码

《Python使用自带的base64库进行base64编码和解码》在Python中,处理数据的编码和解码是数据传输和存储中非常普遍的需求,其中,Base64是一种常用的编码方案,本文我将详细介绍如何使... 目录引言使用python的base64库进行编码和解码编码函数解码函数Base64编码的应用场景注意

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

Java进行文件格式校验的方案详解

《Java进行文件格式校验的方案详解》这篇文章主要为大家详细介绍了Java中进行文件格式校验的相关方案,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、背景异常现象原因排查用户的无心之过二、解决方案Magandroidic Number判断主流检测库对比Tika的使用区分zip

Java使用Curator进行ZooKeeper操作的详细教程

《Java使用Curator进行ZooKeeper操作的详细教程》ApacheCurator是一个基于ZooKeeper的Java客户端库,它极大地简化了使用ZooKeeper的开发工作,在分布式系统... 目录1、简述2、核心功能2.1 CuratorFramework2.2 Recipes3、示例实践3

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

Python使用date模块进行日期处理的终极指南

《Python使用date模块进行日期处理的终极指南》在处理与时间相关的数据时,Python的date模块是开发者最趁手的工具之一,本文将用通俗的语言,结合真实案例,带您掌握date模块的六大核心功能... 目录引言一、date模块的核心功能1.1 日期表示1.2 日期计算1.3 日期比较二、六大常用方法详