jasperReports 通过java导出各种格式报表,及javaweb项目整合显示各种报表
注意:编写此项目时,请先手动编写**.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:
- <span style="font-size:14px;"><?xml version="1.0" encoding="UTF-8" ?>
- <jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports
- http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="DbReport" >
- <!-- jasperReport标签中name="DbReport"需要对应外面文件名, $P{}为填充参数,$V{}为值 ,$F{}为查询值或者为Jr数据-->
- <!-- 页面样式标签 --属性:
- forecolor(前景色,就是文本)
- backcolor(背景色)
- hAlign(水平位置Center, Justified, Left, Right)
- vAlign(垂直位置Bottom, Middle, Top)
- border(边框1Point, 2Point, 4Point, Dotted, None, Thin)
- borderColor(边框颜色)
- fontName(字体)
- fontSize(字体大小)
- isBold,isItalic,IsUnderline,isStrikeThrough(粗体,斜体,下画线,..)
- lineSpacing(1_1_2, Double, Single行间距)
- rotation(旋转,Left, None, Right,转的是90度)
- isStyledText(指示这个Element是否用Style,true,false)
- isDefault(说明这个样式是否默认样式)
- -->
- <style name="pageHeader" forecolor="#FFFFFF" backcolor="#333333"/>
- <!-- 参数标签 -->
- <parameter name="userName" class="java.lang.String"/>
- <!-- 查询语句标签 -->
- <queryString>
- <![CDATA[
- select id,user_name as name,email,qq from user where user_name=$P{userName}
- ]]>
- </queryString>
- <!-- 显示字段标签 -->
- <field name="id" class="java.lang.Integer" />
- <field name="name" class="java.lang.String" />
- <field name="email" class="java.lang.String" />
- <field name="qq" class="java.lang.String" />
- <pageHeader>
- <band height="30">
- <staticText>
- <reportElement style="pageHeader" x="0" y="5" width="55" height="15"/>
- <textElement textAlignment="Center"/>
- <text><![CDATA[ID]]></text>
- </staticText>
- <staticText>
- <reportElement style="pageHeader" x="55" y="5" width="205" height="15"/>
- <text><![CDATA[Name]]></text>
- </staticText>
- <staticText>
- <reportElement style="pageHeader" x="160" y="5" width="255" height="15"/>
- <text><![CDATA[Email]]></text>
- </staticText>
- <staticText>
- <reportElement style="pageHeader" x="260" y="5" width="255" height="15"/>
- <text><![CDATA[QQ]]></text>
- </staticText>
- </band>
- </pageHeader>
- <!-- 显示内容-->
- <detail>
- <band height="20">
- <textField>
- <reportElement x="0" y="4" width="50" height="15"/>
- <textElement textAlignment="Right"/>
- <textFieldExpression><![CDATA[$F{id}]]></textFieldExpression>
- </textField>
- <textField isStretchWithOverflow="true">
- <reportElement positionType="Float" x="55" y="4" width="100" height="15"/>
- <textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
- </textField>
- <textField isStretchWithOverflow="true">
- <reportElement positionType="Float" x="160" y="4" width="100" height="15"/>
- <textFieldExpression><![CDATA[$F{email}]]></textFieldExpression>
- </textField>
- <textField isStretchWithOverflow="true">
- <reportElement positionType="Float" x="260" y="4" width="255" height="15"/>
- <textFieldExpression><![CDATA[$F{qq}]]></textFieldExpression>
- </textField>
- <line>
- <reportElement positionType="Float" x="0" y="19" width="515" height="1" forecolor="#808080"/>
- </line>
- </band>
- </detail>
- </jasperReport>
- </span>
后台代码:TestServlet.java
- <span style="font-size:14px;">package servlets;
- import java.io.File;
- import java.io.IOException;
- import java.io.InputStream;
- import java.sql.ResultSet;
- 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 util.JDBC;
- import net.sf.jasperreports.engine.JRDataSource;
- import net.sf.jasperreports.engine.JRExporterParameter;
- import net.sf.jasperreports.engine.JRResultSetDataSource;
- import net.sf.jasperreports.engine.JasperCompileManager;
- import net.sf.jasperreports.engine.JasperExportManager;
- import net.sf.jasperreports.engine.JasperFillManager;
- import net.sf.jasperreports.engine.JasperPrint;
- import net.sf.jasperreports.engine.JasperReport;
- import net.sf.jasperreports.engine.JasperRunManager;
- import net.sf.jasperreports.engine.data.JRMapArrayDataSource;
- 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.export.JRXlsExporter;
- import net.sf.jasperreports.engine.export.JRXlsExporterParameter;
- import net.sf.jasperreports.engine.util.JRLoader;
- import net.sf.jasperreports.view.JasperViewer;
- public class TestServlet extends HttpServlet {
- @Override
- protected void service(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- try{
- ServletContext context = this.getServletConfig().getServletContext();
- //JasperCompileManager 编译管理器
- //JasperFillManager 填充管理器
- //JRXmlLoader xml加载器
- //JasperPrintManager 打印管理器
- //JasperExportManager 导出管理器
- //JasperRunManager 运行管理器
- 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(context.getRealPath("/reports/DbReport.jasper"));
- JasperReport jasperReport =(JasperReport)JRLoader.loadObject(jasperFile);
- JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, map,JDBC.conn);
- //将查询的数据填充到报表中
- //String sql="select id,user_name as name,email,qq from user";
- //ResultSet rs=JDBC.getResultSet(sql);
- //JRResultSetDataSource jr=new JRResultSetDataSource(rs);
- //JasperFillManager.fillReportToFile(context.getRealPath("/reports/DbReport.jasper"), map, jr);
- //JDBC.closeAll(rs, JDBC.statement, null);//关闭数据连接
- //JasperRunManager.runReportToHtmlFile(context.getRealPath("/reports/DbReport.jasper"), map, JDBC.conn);
- //JasperRunManager.runReportToHtmlFile(context.getRealPath("/reports/DbReport.jasper"), map, jr);
- //生成html文件
- //JasperRunManager.runReportToHtmlFile(context.getRealPath("/reports/DbReport.jasper"), "E:/test.html", map, JDBC.conn);
- //InputStream inputStream=getServletConfig().getServletContext().getResourceAsStream(context.getRealPath("/reports/DbReport.jasper"));
- //JasperRunManager.runReportToPdfStream(inputStream, response.getOutputStream(), map, jr);
- //-----以map数组为数据源,生成html文件
- JasperRunManager.runReportToHtmlFile(context.getRealPath("/reports/DbReport.jasper"), "E:/test2.html", map, getReportDataSource());
- //生成html数据
- /*
- JRHtmlExporter html = new JRHtmlExporter();
- html.setParameter(JRHtmlExporterParameter.JASPER_PRINT, jasperPrint);
- html.setParameter(JRHtmlExporterParameter.OUTPUT_WRITER,response.getWriter());
- html.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN,Boolean.FALSE);
- html.setParameter(JRExporterParameter.CHARACTER_ENCODING, "utf-8");
- html.exportReport();
- */
- //生成excel
- /*
- JRXlsExporter xls=new JRXlsExporter();
- xls.setParameter(JRXlsExporterParameter.JASPER_PRINT, jasperPrint);
- xls.setParameter(JRXlsExporterParameter.OUTPUT_STREAM, response.getOutputStream());
- xls.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);
- xls.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE);
- response.setHeader("Content-Disposition", "attachment;filename=first.xls");
- response.setContentType("application/vnd_ms-excel");
- xls.exportReport();
- */
- //生成pdf
- /*
- JRPdfExporter pdf = new JRPdfExporter();
- pdf.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
- pdf.setParameter(JRExporterParameter.OUTPUT_STREAM, response.getOutputStream());
- response.setHeader("Content-Disposition", "attachment;filename=first.pdf");
- response.setContentType("application/pdf");
- response.setCharacterEncoding("UTF-8");
- pdf.exportReport();
- */
- }catch(Exception e){
- e.printStackTrace();
- }
- }
- private JRDataSource getReportDataSource(){
- //new JRMapArrayDataSource(getMaparray());这里也可以传自定义对象数组,对象属性字段必须对应DbReport.jrxml中显示数据字段
- JRMapArrayDataSource dataSource=new JRMapArrayDataSource(getMaparray());
- return dataSource;
- }
- private Map[] getMaparray(){
- //map key键必须对应DbReport.jrxml中显示数据字段
- Map map1=new HashMap();
- map1.put("id", 1);
- map1.put("name", "aaa");
- map1.put("email", "111@qq.com");
- map1.put("qq", "111");
- Map map2=new HashMap();
- map2.put("id", 2);
- map2.put("name", "bbb");
- map2.put("email", "222@qq.com");
- map2.put("qq", "222");
- Map map3=new HashMap();
- map3.put("id", 3);
- map3.put("name", "ccc");
- map3.put("email", "333@qq.com");
- map3.put("qq", "333");
- Map[] mapArray=new Map[3];
- mapArray[0]=map1;
- mapArray[1]=map2;
- mapArray[2]=map3;
- return mapArray;
- }
- }
- </span>
JDBC:
- <span style="font-size:14px;">package util;
- 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/myapp";
- public static String user="root";
- public static String pwd="root";
- 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();
- }
- }
- }
- </span>
执行效果:html数据
原文地址:https://blog.csdn.net/u013378306/article/details/52412876
jasperReports 通过java导出各种格式报表,及javaweb项目整合显示各种报表的更多相关文章
- java导出csv格式文件
导出csv格式文件的本质是导出以逗号为分隔的文本数据 import java.io.BufferedWriter; import java.io.File; import java.io.FileIn ...
- Java导出Pdf格式表单
前言 作为开发人员,工作中难免会遇到复杂表单的导出,接下来介绍一种通过Java利用模板便捷导出Pdf表单的方式 模拟需求 需求:按照下面格式导出pdf格式的学生成绩单 准备工作 Excel软件 ...
- 【转载】java前后端 动静分离,JavaWeb项目为什么我们要放弃jsp?
原文:http://blog.csdn.net/piantoutongyang/article/details/50878214 今天看到两篇文章,讲解 为什么web开发启用jsp,确实挺有道理,整理 ...
- 如何通过Java导出带格式的 Excel 数据到 Word 表格
在Word中制作报表时,我们经常需要将Excel中的数据复制粘贴到Word中,这样则可以直接在Word文档中查看数据而无需打开另一个Excel文件.但是如果表格比较长,内容就会存在一定程度的丢失,无法 ...
- Java导出带格式的Excel数据到Word表格
前言 在Word中创建报告时,我们经常会遇到这样的情况:我们需要将数据从Excel中复制和粘贴到Word中,这样读者就可以直接在Word中浏览数据,而不用打开Excel文档.在本文中,您将学习如何使用 ...
- java导出json格式文件
生成json文件代码: import java.io.File; import java.io.FileWriter; import java.io.Writer; public class Crea ...
- java 一款可以与ssm框架完美整合的web报表控件
硕正套件运行于客户端(浏览器),与应用服务器(Application Server)技术无关,所以能完全用于J2EE. ASP.Net.php等技术开发的Web应用产品中. 硕正套件部署于服务器,支持 ...
- java程序中没有错,但是项目上面显示一个红叉的解决办法
错误信息: 报Description Resource Path Location Type Java compiler level does not match the version of th ...
- java导出excel报表
1.java导出excel报表: package cn.jcenterhome.util; import java.io.OutputStream;import java.util.List;impo ...
随机推荐
- 洛谷P2912 [USACO08OCT]牧场散步Pasture Walking [2017年7月计划 树上问题 01]
P2912 [USACO08OCT]牧场散步Pasture Walking 题目描述 The N cows (2 <= N <= 1,000) conveniently numbered ...
- 洛谷P1352 没有上司的舞会 [2017年5月计划 清北学堂51精英班Day3]
P1352 没有上司的舞会 题目描述 某大学有N个职员,编号为1~N.他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子 结点的直接上司.现在有个周年庆宴会,宴会每邀请来一个职 ...
- JavaScript远程调用
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 发布Qt Widgets桌面应用程序的方法
Qt是一款优秀的跨平台开发框架,它可以在桌面.移动平台以及嵌入式平台上运行.目前Qt 5介绍程序发布的文章帖子比较少.大家又非常想要知道如何发布Qt应用程序,于是我花了一点儿时间介绍一下如何发布Qt桌 ...
- DOM 创建元素 删除元素(结点)
创建新的 HTML 元素 如需向 HTML DOM 添加新元素,您必须首先创建该元素(元素节点),然后向一个已存在的元素追加该元素. <script> var para=document. ...
- 一位AI研究员+区块链创业者的终极展望:AI DAO将统治世界
一位AI研究员+区块链创业者的终极展望:AI DAO将统治世界 [日期:2017-01-09] 来源:infoq.com 作者:杨赛 [字体:大 中 小] Trent McConaghy是一位资深的 ...
- 超线程(Hyper-Threading)
运行方式 每个单位时间内,一个CPU只能处理一个线程(操作系统:thread),以这样的单位进行,如果想要在一单位时间内处理超过一个线程是不可能的,除非是有两个CPU的实体单元.双核心技术是将两个一样 ...
- 为什么DW的可视化下看到的效果与浏览器的效果有所区别?
可视区不是调用外面浏览器,Dreamweav 可视化区是为用户编辑而设计. 支持最基本的 HTML 与 CSS ,对 CSS 而言,我写入样式时如果你使用最基本的样式时它显示与你浏览器中看的效果相差不 ...
- 几种支持REST的Java框架
目前宣称支持REST的Java框架包括以下这些: Restlet(http://www.restlet.org/) Cetia4(https://cetia4.dev.java.net/) Apach ...
- 【django后端分离】Django Rest Framework之一般配置(简单剖析)
1:常设状态码 200 OK - [GET]:服务器成功返回用户请求的数据,该操作是幂等的(Idempotent). 201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成 ...