《JasperReports结合iReport制作报表-使用iReport设计报表》
已经在http://www.naxsu.com/jasperreports-jie-he-ireport-zhi-zuo-bao-biao-shi-yong-ireport-she-ji-bao-biao/写得很清楚了,下面就接着说
JasperReports主页:http://jasperforge.org/projects/jasperreports
下载要注册,真麻烦
现在的最新版本是4.6.0,下载地址是:http://sourceforge.net/projects/jasperreports/files/jasperreports/JasperReports%204.6.0/
在这里我下载的是jasperreports-4.6.0-project.zip
需要的jar包,这是我测试需求哪个加哪个,我生成PDF和HTML报表用到以下已经足够了。
commons-beanutils-1.8.0.jar commons-collections-2.1.1.jar commons-digester-2.1.jar commons-logging-1.1.1.jar groovy-all-1.7.5.jar iText-2.1.7.jar iTextAsian.jar jasperreports-4.6.0.jar mysql-connector-java-5.1.7-bin.jar |
在这里我们就建一个简单的java项目来测试一下。
生成报表主要分为三个步骤:
<!--[if !supportLists]-->1. <!--[endif]-->编译报表
把iReport设计好的报表report1.jrxml编译成report1.jasper
<!--[if !supportLists]-->2. <!--[endif]-->填充报表
连接数据库,把1编译好的report1.jasper填充好,生成report1.jrprint
<!--[if !supportLists]-->3. <!--[endif]-->导出报表
也就是把2.填充好的报表按照各种格式导出来。
代码比较简单,下面直接看代码:
package com.naxsu.report; import java.io.File; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import net.sf.jasperreports.engine.JRException; import net.sf.jasperreports.engine.JRExporterParameter; import net.sf.jasperreports.engine.JasperCompileManager; import net.sf.jasperreports.engine.JasperFillManager; import net.sf.jasperreports.engine.JasperPrint; import net.sf.jasperreports.engine.export.JRHtmlExporter; import net.sf.jasperreports.engine.export.JRHtmlExporterParameter; import net.sf.jasperreports.engine.export.JRPdfExporter; import net.sf.jasperreports.engine.util.JRLoader; /** * JasperReports生成报表简单应用 */ public class ReportTest { /** * 编译报表 */ public static void compiler(String sourceFileName, String destFileName) { try { JasperCompileManager.compileReportToFile(sourceFileName, destFileName); } catch (JRException e) { e.printStackTrace(); } }
/** * 填充报表 */ public static void fill(String sourceFileName, String destFileName) { Connection conn = null; try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/report", "root", "123"); JasperFillManager.fillReportToFile(sourceFileName, destFileName,null, conn); } catch (JRException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); }finally{ if(conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } }
/** * 导出HTML格式报表 */ public static void exportToHTML(String sourceFileName, String destFileName) { try { JasperPrint jp = (JasperPrint) JRLoader.loadObject(new File( sourceFileName)); JRHtmlExporter export = new JRHtmlExporter(); export.setParameter(JRExporterParameter.JASPER_PRINT, jp); export.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, destFileName); export.setParameter( JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN, Boolean.FALSE); export.exportReport(); } catch (JRException e) { e.printStackTrace(); } }
/** * 导出PDF格式报表 */ public static void exportToPDF(String sourceFileName, String destFileName) { try { JasperPrint jp = (JasperPrint) JRLoader.loadObject(new File( sourceFileName)); JRPdfExporter export = new JRPdfExporter(); export.setParameter(JRExporterParameter.JASPER_PRINT, jp); export.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, destFileName); export.setParameter( JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN, Boolean.FALSE); export.exportReport(); } catch (JRException e) { e.printStackTrace(); } }
public static void main(String[] args) { String jrxmlName = "E:\\JasperReports_iReport\\report1.jrxml"; String jasperFileName = "E:\\JasperReports_iReport\\report1.jasper"; String jrprintFileName = "E:\\JasperReports_iReport\\report1.jrprint"; String htmlFileName = "E:\\JasperReports_iReport\\report1.pdf"; ReportTest.compiler(jrxmlName, jasperFileName); ReportTest.fill(jasperFileName, jrprintFileName); ReportTest.exportToPDF(jrprintFileName, htmlFileName); } } |