注意:编写此项目时,请先手动编写
**.
jrxml
或者用IReport生成**.jrxml或**.jasper
注:java导出报表与web项目显示报表方法其实是相同的,只不过有一句代码不同,如下
html.setParameter(JRHtmlExporterParameter.OUTPUT_FILE_NAME,"C:/Users/Administrator/Desktop/ireport/report1.html");//生成文件
//html.setParameter(JRHtmlExporterParameter.OUTPUT_WRITER,response.getWriter()); // web页面显示
maven依赖
<!-- iReport JasperReports -->
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>5.6.0</version>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>2.2.2</version>
</dependency>
通过java代码生成各种格式报表文件
JDBC文件
package com.hlzt.test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class JDBC {
public static String driver="com.mysql.jdbc.Driver";
public static String url="jdbc:mysql://localhost:3306/senyuan1";
public static String user="root";
public static String pwd="123456";
public static Connection conn=getConnection();
public static Statement statement=getStatement();
private static Connection getConnection(){
if(conn==null){
try{
Class.forName(driver);
conn=DriverManager.getConnection(url,user,pwd);
}catch(Exception e){
e.printStackTrace();
}
}
return conn;
}
private static Statement getStatement(){
if(statement==null){
try{
statement=conn.createStatement();
}catch(Exception e){
e.printStackTrace();
}
}
return statement;
}
public static ResultSet getResultSet(String sql){
ResultSet rs=null;
try{
rs=statement.executeQuery(sql);
}catch(Exception e){
e.printStackTrace();
}
return rs;
}
public static void closeAll(ResultSet rs,Statement st,Connection cn){
try{
if(rs!=null){
rs.close();
}
if(st!=null){
st.close();
}
if(cn!=null){
cn.close();
}
}catch(Exception e){
e.printStackTrace();
}
}
}
package com.hlzt.test;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
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.JasperReport;
import net.sf.jasperreports.engine.export.JRHtmlExporter;
import net.sf.jasperreports.engine.export.JRHtmlExporterParameter;
import net.sf.jasperreports.engine.util.JRLoader;
@SuppressWarnings("deprecation")
public class TestReport {
public static void main(String[] args) {
service();
}
//protected void service(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {\
protected static void service(){
try{
//ServletContext context = this.getServletConfig().getServletContext();
//JasperCompileManager 编译管理器
//JasperFillManager 填充管理器
//JRXmlLoader xml加载器
//JasperPrintManager 打印管理器
//JasperExportManager 导出管理器
//JasperCompileManager.compileReportToFile(context.getRealPath("/reports/DbReport.jrxml"));//编译jrxml文件,生成jasper文件
Map map=new HashMap();//参数map
map.put("userName", "admin");
//生成jrprint文件
//JasperFillManager.fillReportToFile(context.getRealPath("/reports/DbReport.jasper"), map, JDBC.conn);
File jasperFile=new File("C:/Users/Administrator/Desktop/ireport/report1.jasper");
JasperReport jasperReport =(JasperReport)JRLoader.loadObject(jasperFile);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, map,JDBC.conn);
File file=new File("C:/Users/Administrator/Desktop/ireport/report1.html");
//生成html
JRHtmlExporter html = new JRHtmlExporter();
html.setParameter(JRHtmlExporterParameter.JASPER_PRINT, jasperPrint);
html.setParameter(JRHtmlExporterParameter.OUTPUT_FILE_NAME,"C:/Users/Administrator/Desktop/ireport/report1.html");//生成文件
//html.setParameter(JRHtmlExporterParameter.OUTPUT_WRITER,response.getWriter()); // web页面显示
html.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN,Boolean.FALSE);
html.setParameter(JRExporterParameter.CHARACTER_ENCODING, "utf-8");
html.exportReport();
//生成excel
/*
JRXlsExporter xls=new JRXlsExporter();
*/
//生成pdf
/*
JRPdfExporter pdf = new JRPdfExporter();
*/
}catch(Exception e){
e.printStackTrace();
}
}
}
与javaweb整合
本文用的是JasperReport最新版本6.0
JasperReport官网:community.jaspersoft.com
web开发建议下载JasperReports library --> jasperreports-xxx-project 里面包含demo以及api
项目结构:
jar包:新手可以把下载下来的所有jar包都放进去,熟练之后可以根据自己所需加入相关jar包
WebRoot下:新建reports文件夹,用来存放jrxml、jasper文件;build.xml(放入进去之后会出现蚂蚁图标);
jrxml文件代码,此代码是xml格式文件,可以自己手写,也可以安装 iReport设计编译成jasper文件,为了入门下面纯手写
DbReport.jrxml:
后台代码:TestServlet.java
JDBC:
执行效果:html数据