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.      }  
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值