查看JasperReport的api可以知道,JasperReport给我们提供了丰富的数据源,其中BeanCollectionDataSource是一个比较常用的数据源。正如其名,BeanCollectionDataSource是把一个装满Bean对象的Collection作为数据源,在JasperReport的模版中定义的每一个Filed就相当于Bean对象的一个Filed。
下面是一个模版的定义,取名为report4.jrxml
<?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="report4" language="groovy" columnCount="2" pageWidth="800" pageHeight="842" columnWidth="380" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="0"/>
<parameter name="title" class="java.lang.String"/>
<field name="id" class="java.lang.Integer"/>
<field name="name" class="java.lang.String"/>
<background>
<band splitType="Stretch"/>
</background>
<title>
<band height="79" splitType="Stretch">
<textField>
<reportElement x="62" y="19" width="630" height="29"/>
<textElement textAlignment="Center" verticalAlignment="Middle">
<font size="16"/>
</textElement>
<textFieldExpression><![CDATA[$P{title}]]></textFieldExpression>
</textField>
</band>
</title>
<columnHeader>
<band height="24" splitType="Stretch">
<staticText>
<reportElement x="226" y="2" width="100" height="20"/>
<textElement textAlignment="Center">
<font size="12" isBold="true"/>
</textElement>
<text><![CDATA[序号]]></text>
</staticText>
<staticText>
<reportElement x="434" y="2" width="100" height="20"/>
<textElement textAlignment="Center">
<font size="12" isBold="true"/>
</textElement>
<text><![CDATA[名称]]></text>
</staticText>
</band>
</columnHeader>
<detail>
<band height="37" splitType="Stretch">
<textField>
<reportElement x="226" y="11" width="100" height="20"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$F{id}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="434" y="11" width="100" height="20"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
</textField>
</band>
</detail>
</jasperReport>
下面是进行测试的主程序:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
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.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
public class Test3 {
public static void main(String args[]) throws JRException {
//用于传递参数的Map
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("title", "JasperReport使用BeanCollectionDataSource示例");
//用于建立BeanCollection数据源的Collection
List<Product> beanCollection = new ArrayList<Product>();
for (int i=0; i<10; ) {
Product p = new Product();
p.setId(++i);
p.setName("商品_" + i);
beanCollection.add(p);
}
JRDataSource dataSource = new JRBeanCollectionDataSource(beanCollection);
//编译jrxml文件
JasperReport jasperReport = JasperCompileManager.compileReport("src/report4.jrxml");
//填充数据
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, dataSource);
//导出为html文件
JasperExportManager.exportReportToHtmlFile(jasperPrint, "test3_beanCollectionDataSource.html");
System.out.println(".........................");
}
}
Product.class
public class Product {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
分享到:
相关推荐
**JasperReport** 是一个强大的开源报告生成工具,主要用于Java应用程序,可以生成各种类型的静态和交互式报告。它使用XML或Java代码来定义报告布局,并支持多种数据源,包括数据库连接、CSV文件、XML数据等。...
本文将详细介绍如何在JasperReports中直接在一个报表中使用多个数据源,从而避免了子报表带来的问题,并提高了开发效率。 ### 1. 多数据源的概念及应用场景 - **概念**:多数据源是指在一个报表设计中同时使用多个...
jasperReport5.6.1编码以及使用 JasperReport是一款功能强大的报表生成工具,广泛应用于各种Java应用程序中。下面是关于JasperReport5.6.1编码以及使用的详细知识点。 JasperReport编码 JasperReport编码是指在...
接着,开发者转向了`JRGraphics2DExporter`类,这是一个专门用于将JasperReport报表导出到`Graphics2D`对象的导出器。`JRGraphics2DExporter`的优势在于它能够精确地将报表渲染到`Graphics2D`实例,而不是近似模拟。...
例如,以下是一个简单的Java代码片段,展示了如何使用jasperreport模板生成报表: ```java JasperDesign jasperDesign = JRXmlLoader.load("path/to/groupOpenReport.jrxml"); JasperReport jasperReport = ...
JasperReport是一个强大的Java报告库,它允许开发者创建复杂、美观的报表,广泛应用于企业级应用中。在JasperReport中,子报表是用于在主报表内部嵌套其他报表的一个功能,可以用来组织和展示更复杂的结构化数据。...
jasperReport通过一个XML文件定义报表布局,并通过Java API来填充数据并生成最终的报表文档。这一过程通常涉及到多个步骤:设计报表模板、填充数据以及导出报表。 在集成Spring框架的情况下,jasperReport能够更好...
WebWork是一个轻量级的MVC框架,它与JasperReport结合,可以为开发者提供灵活的报表设计和展示能力。本文将深入探讨在WebWork环境下,如何使用JasperReport的子报告(subreport)功能进行套打,并以javabean作为数据...
在本文中,我们将深入探讨如何使用JasperReport来实现动态表头,这是一个在报表生成过程中非常重要的特性,尤其是在处理如服装行业中需要灵活调整的尺码组数据时。JasperReport是一个开源的报表工具,具有良好的可...
首先,需要创建一个数据库连接,然后添加一个数据源,最后使用SQL查询语句来获取数据。 ### 如何设置数据库连接 设置数据库连接需要使用iReport的数据库连接向导。首先,需要选择数据库类型,然后输入数据库连接...
JRXML文件可以使用iReport这样的可视化编辑器来创建,iReport是JasperReport的一个配套工具,提供了一个友好的图形化界面。 客户端打印是指在用户的计算机上直接完成打印操作,而不是通过服务器。在JasperReport中...
总的来说,JasperReport是一个功能强大的报表工具,它提供了丰富的设计元素和灵活的数据处理方式,使得即使复杂的业务报表也能轻松创建。在实际开发中,开发者可以根据需求自由组合这些元素,打造出满足业务需求的...
它提供了一个灵活的报表设计工具——iReport,用户可以通过拖放操作创建复杂的报表布局。此外,jasperReport还支持参数化报表,允许在运行时传递参数来定制报表内容。 在描述中提到的"所有相关学习资料"可能包括...
总的来说,jasperReport的亚洲语言包通过iTextAsianCmaps.jar、iTextAsian.jar和一个较旧版本的iText库,提供了对中文和其他亚洲语言的全面支持,确保了在PDF报告中正确地呈现复杂的文本和字符。这在处理多语言报告...
iReport则是JasperReport的官方设计工具,它提供了一个图形化界面,使得非程序员也能创建和编辑报表模板。用户可以通过拖放操作来设计表格、图表、文本框等元素,同时可以预览报表效果,极大地提高了报表开发的效率...
总结来说,JasperReport是一个强大且灵活的报表工具,通过其丰富的功能和广泛的社区支持,可以帮助开发者快速创建专业级别的报表。无论是在企业级应用还是个人项目中,JasperReport都是值得信赖的报表解决方案。通过...
一个jasperReport由设计文件(.jrxml)和编译后的字节码文件(.jasper)组成。设计文件使用XML语法定义了报告的布局,包括字段、变量、样式、图像、文本框等元素。要实现动态合并单元格,我们需要在设计文件中设置...
jasperreport创建多个List数据源报表 通多个detail实现多个table效果,简单 快捷
JasperReport的设计工具——iReport(现在已合并到Jaspersoft Studio)提供了一个直观的图形用户界面,使得非技术人员也能设计报表。JasperReport与Spring、Hibernate等Java框架兼容良好,可以方便地集成到现有的...
- **子报表(Subreport)**: 在主报表中嵌入另一个报表,用于分组或显示详细信息。 - **图表(Chart)**: 可以根据数据生成各种图表,如柱状图、饼图、线图等。 ### 3. 开发流程 1. **设计报表**: 使用iReport或...