iReport画出来的报表可以满足我们大部分的需要,所以采用iReport 编辑jrxml文件是我们的首选啦!当然掌握jrxml文件的结构也是必须的。
采用JDBC数据源必须有数据库支持啊!我们新建一个test表,其中有pid、name、sex、password、department、age字段,为了方便期间我们定义这些字段全部为String类型。
在iReport中新建一报表,报表有title、pageHeader、columnHeader、detail、columnFooter、pageFooter、lastPageFooter、summary等部分,被成为Report section
title:顾名思义是指报表的标题哦,它会显示在报表的最上面,如果有多页只会出现在第一页的最上面。pageHeader:每页的标题,如果有多页每页的开始都会显示此部分内容。
columnHeader:显示报表的列头不经常使用。
detail:这个就不用说了吧!
有header就会出现footer啦!lastPageFooter只会出现在最后一页。summay会出现在每一页数据上,主要是为了展示一些统计信息,比如当前的时间,页数信息啦!
新建一parameter
此参数可作为报表的标题使用,我们在程序中动态的传递给报表。
document structure---》parameter里找到reportTitle参数拖至title区域,右击编辑reportTitle域的属性,在font选项里找到Markup设置为HTML,TextField选项里设置Text Field Expreesion为
下来就是设置报表的Field字段了,不需要我们一个个的新建那些字段啦!
选择Data--->Report Query在Report Query选项里选择Query Language为SQL,写入SqL语句
这时所有的field会出现在下面(SQL是正确的)
关闭对话框在document structure---》field中就会出现我们需要的field,之后拖到相应的位置,关于怎么美化报表这个本人也不是很懂哦!
如果需要显示一下当前的页数信息也可以自己托动Variables里的PAGE_NUMBER完成页数的显示。完整的jrxml文件如下:
<!-- Created with iReport - A designer for JasperReports -->
<!DOCTYPE jasperReport PUBLIC "//JasperReports//DTD Report Design//EN" "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">
<jasperReport
name="Person"
columnCount="1"
printOrder="Vertical"
orientation="Portrait"
pageWidth="595"
pageHeight="842"
columnWidth="535"
columnSpacing="0"
leftMargin="30"
rightMargin="30"
topMargin="20"
bottomMargin="20"
whenNoDataType="NoPages"
isTitleNewPage="false"
isSummaryNewPage="false">
<property name="ireport.scriptlethandling" value="0" />
<property name="ireport.encoding" value="UTF-8" />
<import value="java.util.*" />
<import value="net.sf.jasperreports.engine.*" />
<import value="net.sf.jasperreports.engine.data.*" />
<parameter name="reportTitle" isForPrompting="true" class="java.lang.String"/>
<queryString><![CDATA[select * from test order by pid DESC]]></queryString>
<field name="pid" class="java.lang.String"/>
<field name="name" class="java.lang.String"/>
<field name="sex" class="java.lang.String"/>
<field name="password" class="java.lang.String"/>
<field name="department" class="java.lang.String"/>
<field name="age" class="java.lang.String"/>
<background>
<band height="6" isSplitAllowed="true" >
</band>
</background>
<title>
<band height="29" isSplitAllowed="true" >
<textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None" hyperlinkTarget="Self" >
<reportElement
x="138"
y="0"
width="258"
height="29"
key="textField"/>
<box></box>
<textElement textAlignment="Center" verticalAlignment="Middle" markup="html">
<font pdfFontName="Helvetica-Bold" isBold="true"/>
</textElement>
<textFieldExpression class="java.lang.String"><![CDATA["<font color='blue' size='5'>"+$P{reportTitle}+"</font>"]]></textFieldExpression>
</textField>
</band>
</title>
<pageHeader>
<band height="0" isSplitAllowed="true" >
</band>
</pageHeader>
<columnHeader>
<band height="0" isSplitAllowed="true" >
</band>
</columnHeader>
<detail>
<band height="22" isSplitAllowed="true" >
<textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None" hyperlinkTarget="Self" >
<reportElement
x="0"
y="0"
width="100"
height="18"
key="textField"/>
<box></box>
<textElement verticalAlignment="Top">
<font/>
</textElement>
<textFieldExpression class="java.lang.String"><![CDATA[$F{pid}]]></textFieldExpression>
</textField>
<textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None" hyperlinkTarget="Self" >
<reportElement
x="100"
y="0"
width="93"
height="18"
key="textField"/>
<box></box>
<textElement verticalAlignment="Top">
<font/>
</textElement>
<textFieldExpression class="java.lang.String"><![CDATA[$F{name}]]></textFieldExpression>
</textField>
<textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None" hyperlinkTarget="Self" >
<reportElement
x="193"
y="0"
width="58"
height="18"
key="textField"/>
<box></box>
<textElement verticalAlignment="Top">
<font/>
</textElement>
<textFieldExpression class="java.lang.String"><![CDATA[$F{sex}]]></textFieldExpression>
</textField>
<textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None" hyperlinkTarget="Self" >
<reportElement
x="251"
y="0"
width="100"
height="18"
key="textField"/>
<box></box>
<textElement verticalAlignment="Top">
<font/>
</textElement>
<textFieldExpression class="java.lang.String"><![CDATA[$F{password}]]></textFieldExpression>
</textField>
<textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None" hyperlinkTarget="Self" >
<reportElement
x="351"
y="0"
width="100"
height="18"
key="textField"/>
<box></box>
<textElement verticalAlignment="Top">
<font/>
</textElement>
<textFieldExpression class="java.lang.String"><![CDATA[$F{department}]]></textFieldExpression>
</textField>
<textField isStretchWithOverflow="false" pattern="" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None" hyperlinkTarget="Self" >
<reportElement
x="451"
y="0"
width="84"
height="18"
key="textField"/>
<box></box>
<textElement verticalAlignment="Top">
<font/>
</textElement>
<textFieldExpression class="java.lang.String"><![CDATA[$F{age}]]></textFieldExpression>
</textField>
<line direction="TopDown">
<reportElement
x="0"
y="17"
width="535"
height="1"
key="line-1"/>
<graphicElement stretchType="NoStretch"/>
</line>
</band>
</detail>
<columnFooter>
<band height="0" isSplitAllowed="true" >
</band>
</columnFooter>
<pageFooter>
<band height="24" isSplitAllowed="true" >
<textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None" hyperlinkTarget="Self" >
<reportElement
x="387"
y="5"
width="22"
height="18"
key="textField"/>
<box></box>
<textElement textAlignment="Center" verticalAlignment="Middle">
<font/>
</textElement>
<textFieldExpression class="java.lang.Integer"><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression>
</textField>
<staticText>
<reportElement
x="373"
y="5"
width="14"
height="17"
key="staticText-2"/>
<box></box>
<textElement textAlignment="Center" verticalAlignment="Middle">
<font pdfFontName="Helvetica-Bold" size="12" isBold="true"/>
</textElement>
<text><![CDATA[第]]></text>
</staticText>
<staticText>
<reportElement
x="409"
y="5"
width="14"
height="17"
key="staticText-3"/>
<box></box>
<textElement textAlignment="Center" verticalAlignment="Middle">
<font pdfFontName="Helvetica-Bold" size="12" isBold="true"/>
</textElement>
<text><![CDATA[页]]></text>
</staticText>
</band>
</pageFooter>
<summary>
<band height="0" isSplitAllowed="true" >
</band>
</summary>
</jasperReport>
我们可以直接使用ireport查看预览效果,但是大部分我们是在应用程序中使用的哦!我们看看我们怎么让这个jrxml模板文件工作呢,
InputStream in = new FileInputStream(file); // 编译报表 jasperReport =
jasperReport = JasperCompileManager.compileReport(in);
编译文件是很耗时的工作,通常这个由iReport去做我们使用jasper文件即可,
.loadObject("D:\\workspace\\Person.jasper");
产生了JasperReport对象下来就是要填充数据了,采用JDBC方式我们需要一个打开的connection(数据库连接),
还有报表需要的parameter:
HashMap map = new HashMap();
map.put("reportTitle", "laoshulin");
return map;
}
.fillReport(jasperReport, getMap, getConn());
针对jasperPrint对象JasperReport有很多的API可以提供各种方式的预览或是生成文件
我只说说JasperViewer吧!其它的看看api或是google一下就知道了
JasperViewer 继承自JFrame类,
这样就可以预览报表了,
JRViewer这个类继承Jpanel,我们可以在web中使用它,后面介绍客户端打印时再详细介绍。
JDBC数据源很简单主要是SQL的功底,但是它是最基础的,网上一大堆这方面的介绍哦,可以参考别人的多看看哦,我写的这些都有点语无伦次了,主要是我自己不怎么写东西,多以代码的形式留给自己了,现在写出来和大家交流,当时做这个的时候找了好多的文章没有一篇写的深刻的,大多都是copy的。
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.JRException;
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.data.JRMapCollectionDataSource;
import net.sf.jasperreports.view.JasperViewer;
/**
*
* <p>C/S架构 JasperReport 的简单使用<p>
*
* 创建日期 2013-4-22<br>
* @author longgangbai<br>
* @version $Revision$ 2013-4-22
* @since 3.0.0
*/
public class Main {
public static JRDataSource createReportDataSource() {
JRDataSource dataSource;
Collection<Map<String, ?>> reportRows = initializeMapArray();
dataSource = new JRMapCollectionDataSource(reportRows);
return dataSource;
}
public static Collection<Map<String,?>> initializeMapArray() {
Collection<Map<String, ?>> reportRows = new ArrayList<Map<String,?>>();
HashMap<String, String> row1Map = new HashMap<String, String>();
HashMap<String, String> row2Map = new HashMap<String, String>();
HashMap<String, String> row3Map = new HashMap<String, String>();
HashMap<String, String> row4Map = new HashMap<String, String>();
row1Map.put("tail_num", "N263Y");
row1Map.put("aircraft_serial", "Chinese,我是中国人");
row1Map.put("aircraft_model", "39 ROSCOE TRNR RACER");
row1Map.put("engine_model", "R1830 SERIES");
row2Map.put("tail_num", "N4087X");
row2Map.put("aircraft_serial", "BA100-163");
row2Map.put("aircraft_model", "BRADLEY AEROBAT");
row2Map.put("engine_model", "R2800 SERIES");
row3Map.put("tail_num", "N43JE");
row3Map.put("aircraft_serial", "HAYABUSA 1");
row3Map.put("aircraft_model", "NAKAJIMA KI-43 IIIA");
row3Map.put("engine_model", "R1830 SERIES");
row4Map.put("tail_num", "N912S");
row4Map.put("aircraft_serial", "9973CC");
row4Map.put("aircraft_model", "PA18-150");
row4Map.put("engine_model", "R-1820 SER");
reportRows.add(row1Map);
reportRows.add(row2Map);
reportRows.add(row3Map);
reportRows.add( row4Map);
return reportRows;
}
public static void main(String[] args) throws JRException {
InputStream inputStream=Main.class.getResourceAsStream("/resources/data/AircraftReport.jrxml");
System.out.println(inputStream);
JRDataSource jrdatasource =createReportDataSource();
//填充报表数据生成JasperPrint对象
JasperReport jrt = JasperCompileManager.compileReport(inputStream);//编译报表格式
//填充报表数据生成JasperPrint对象
JasperPrint jasperPrint = JasperFillManager.fillReport(jrt, new HashMap<String, Object>(), jrdatasource);
JasperViewer.viewReport(jasperPrint,false);
JasperViewer view = new JasperViewer(jasperPrint, false);
view.pack();
view.setVisible(true);
}
}
相关推荐
### JasperReport iReport 集成到Web应用操作说明 #### 第一部分:下载与安装 JasperReport 和 iReport 的集成对于开发具有复杂报表需求的 Web 应用来说至关重要。iReport 是一个强大的桌面应用程序,用于设计报表...
**JasperReport与Servlet在Web应用中的打印预览** JasperReport是一款强大的开源报表工具,它允许开发者在Java应用程序、Web应用甚至独立的Java应用程序中创建复杂的报告。Servlet是Java Web开发中的一个重要组件,...
Struts2和JasperReport的整合是Web应用程序中创建动态报表的一种常见方法。JasperReport是一个功能强大的开源报表引擎,允许开发人员通过iReports这样的设计工具以可视化的形式创建复杂的报表模板。Struts2,作为一...
总结来说,JasperReport与Servlet的结合使得在Web应用中生成和打印报表变得简单而灵活。开发者可以设计丰富的报表模板,利用Servlet处理用户请求,结合数据库数据动态生成报表,最终提供预览和打印服务。理解并掌握...
jasperReport是一款强大的开源报表工具,广泛应用于Java应用程序中,用于设计、创建和展示复杂的数据报告。然而,对于包含亚洲语言(如中文、日文、韩文等)的报告,jasperReport默认的支持可能不足,因此需要额外的...
JasperReport Server 安装手册 JasperReport Server 安装手册是一份详细的安装指南,旨在帮助用户正确地安装和配置 JasperReport Server。下面是 JasperReport Server 安装手册的主要知识点: 一、准备材料 ...
JasperReport和iReport是Java世界中常用的报表生成工具,它们可以帮助开发者轻松创建复杂的报表,并在Web应用程序中集成。在JasperReport 2.0.2和iReport 2.0.2版本中,我们可以实现多种功能,包括字段、变量、参数...
下面是一个简单的示例,展示了如何使用JDBCConnection类来获取数据库连接并传递给JasperReport使用。 ```java public class JDBCConnection { private String jdbcDriver; private String jdbcUrl; private ...
在Web应用中,Servlet常用于接收和处理用户的请求,而JasperReport则可以作为Servlet的后端服务,生成报表内容。 要实现HTML显示报表,我们需要完成以下步骤: 1. **报表模板设计**:使用JasperReport提供的设计...
JasperReport是一种基于Java的报表生成技术,它被广泛应用于企业级应用中用于生成复杂且格式化良好的PDF文档。对于初学者而言,掌握JasperReport的核心概念和技术要点至关重要。 #### 二、基础知识 ##### 1. 入门...
springMvc集成JasperReport超简单一个简单方法搞定,支持excel、html,扩展方便简单实用
JasperReport支持多种数据源,包括数据库、CSV文件、XML文件等,并能与Java应用程序、Web应用程序或独立的应用程序无缝集成。 在JasperReport 4.0.0版本中,用户可以利用其内置的报表设计工具——JasperDesign,...
**JasperReport应用小结** JasperReport是一款强大的开源报表工具,主要应用于Java环境中,用于生成各种复杂的报表,包括PDF、HTML、Excel等多种格式。它以其丰富的设计功能、灵活的数据处理以及良好的社区支持,...
**JasperReport——深度解析与应用指南** JasperReport是一款强大的开源报表工具,它允许开发者在Java应用程序中创建复杂的报表。作为一个基于纯Java的报表引擎,JasperReport能够处理多种数据源,包括数据库连接、...
JasperReport 是一个开源的报表工具,它允许开发者创建复杂的报告设计,并在各种应用程序中嵌入这些报告。在这个实例中,我们将探讨如何导入并使用一个可用的 JasperReport 示例项目,以理解其工作原理和核心功能。 ...
在本文中,我们将深入探讨如何整合Struts2框架与JasperReport3来创建动态报表,并利用iReport工具进行报表设计。Struts2是一个流行的Java Web应用程序框架,...这种方法使得在Web应用中动态生成复杂报表变得简单易行。
### jasperReport与Spring框架集成应用详解 #### 一、jasperReport简介及Spring环境配置 **jasperReport**是一款非常强大的报表工具,它能够基于Java环境生成多种格式的报表,如PDF、HTML、XLS(Excel)、CSV以及...