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 ...
随机推荐
- PYTHON网络爬虫与信息提取[BeautifulSoup](单元四)
1 简介 from bs4 import BeautifulSoup soup=BeautifulSoup(<p>data</p>,'html.parser') 2 基本元素 ...
- Linux部署教育云平台测试环境总结
2016年10月16日换了新公司,刚进公司就要进行平台测试环境部署,由于之前Linux用的比较少,只用过几个简单的杀进程.重启tomcat.查看日志等简单的操作命令,真要在LInux服务器上部署环境的 ...
- ubuntu设置终端命令历史记录
----------------------------------------------- HISTTIMEFORMAT='%F %T ' # 使用HISTTIMEFORMAT在历史中显示TIME ...
- golang标准库中有些函数只有签名没有函数体是怎么回事?
- Vue--使用watch、computed、filter方法来监控
watch与computed.filter: watch:监控已有属性,一旦属性发生了改变就去自动调用对应的方法 computed:监控已有的属性,一旦属性的依赖发生了改变,就去自动调用对应的方法 f ...
- 函数的length属性
函数的length 属性指明函数的形参个数. length 是函数对象的一个属性值,指该函数有多少个必须要传入的参数,即形参的个数.形参的数量不包括剩余参数个数,仅包括第一个具有默认值之前的 ...
- sql server 创建视图添加表时出现从其他数据库导入的表未显示出来
创建视图添加表时出现从其他数据库导入的表未显示出来,通过数据库刷新,也不能解决.关闭SQL server management studio 后,再次进入,在创建视图的时候添加表的列表就出现了新导入的 ...
- 2017年浙工大迎新赛热身赛 A 毕业设计选题 【结构体排序】
时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 65536K,其他语言131072K64bit IO Format: %lld 题目描述 又到了一年一度,大四老学长们毕业设计选题的时候, ...
- 在一个已经使用mybatis的项目里引入mybatis-plus,结果不能共存
mybatis-plus版本号:3.0.6 问题产生原因: 原有的项目使用的是springboot+mybatis的框架,一切接口服务均没有问题.由于新的需求增加shiro权限认证,然后也在考虑用my ...
- FastAdmin 安装后点登录没有反应怎么办?
FastAdmin 安装后点登录没有反应怎么办? 很多小伙伴安装后点"登录"没有反应. 这个 URL 是对的,但是页面就是不改变. 如果这时候点击 URL 变了,那没有到登陆界面, ...