1.空数据(Empty Datasources)
就是说JRXML文件里面的内容都是静态的,直接使用
JREmptyDataSource就行了
JasperRunManager.runReportToPdfStream(reportStream,
servletOutputStream, new HashMap(), new JREmptyDataSource());
2.Map数组(Map Datasources)
有的时候数据不一定要从数据库里面来,还有可能从Map数组里面来
成生Map[]的方法
private Map[] initializeMapArray()
{
//你可以把数组里面的每个map看成一个对象,就相于数据库里面的每个字段
HashMap[] reportRows = new HashMap[4];
HashMap row1Map = new HashMap();
HashMap row2Map = new HashMap();
HashMap row3Map = new HashMap();
HashMap row4Map = new HashMap();
row1Map.put("tail_num", "N263Y");
row1Map.put("aircraft_serial", "T-11");
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[0] = row1Map;
reportRows[1] = row2Map;
reportRows[2] = row3Map;
reportRows[3] = row4Map;
return reportRows;
}
生成JRMapArrayDataSource对象
private JRDataSource createReportDataSource()
{
JRMapArrayDataSource dataSource;
Map[] reportRows = initializeMapArray();
dataSource = new JRMapArrayDataSource(reportRows);
return dataSource;
}
Servlet里面
JRDataSource dataSource = createReportDataSource();
JasperRunManager.runReportToPdfStream(reportStream,
servletOutputStream, new HashMap(), dataSource);
3.Map集合
private JRDataSource createReportDataSource()
{
JRMapCollectionDataSource dataSource;
Collection reportRows = initializeMapCollection();
dataSource = new JRMapCollectionDataSource(reportRows);
return dataSource;
}
private Collection initializeMapCollection()
{
ArrayList reportRows = new ArrayList();
HashMap row1Map = new HashMap();
HashMap row2Map = new HashMap();
HashMap row3Map = new HashMap();
HashMap row4Map = new HashMap();
row1Map.put("tail_num", "N263Y");
row1Map.put("aircraft_serial", "T-11");
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;
}
使用
JRDataSource dataSource = createReportDataSource();
JasperRunManager.runReportToPdfStream(reportStream,
servletOutputStream, new HashMap(), dataSource);
4.对象数组(Java Objects as Datasources)对象JAVABEAN
public class AircraftData
{
public AircraftData(String tail, String serial, String model,
String engine)
{
setTailNum(tail);
setAircraftSerial(serial);
setAircraftModel(model);
setEngineModel(engine);
}
public AircraftData()
{
}
private String tailNum;
private String aircraftSerial;
private String aircraftModel;
private String engineModel;
//set get method.....
}
JRXML文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jasperReport PUBLIC "//JasperReports//DTD Report Design//EN"
"http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">
<jasperReport name="AircraftReport">
<field name="tailNum" class="java.lang.String"/>
<field name="aircraftSerial" class="java.lang.String"/>
<field name="aircraftModel" class="java.lang.String"/>
<field name="engineModel" class="java.lang.String"/>
<pageHeader>
<band height="30">
<staticText>
<reportElement x="0" y="0" width="69" height="24"/>
<textElement verticalAlignment="Bottom"/>
<text>
<![CDATA[Tail Number: ]]>
</text>
</staticText>
<staticText>
<reportElement x="140" y="0" width="69" height="24"/>
<text>
<![CDATA[Serial Number: ]]>
</text>
</staticText>
<staticText>
<reportElement x="280" y="0" width="69" height="24"/>
<text>
<![CDATA[Model: ]]>
</text>
</staticText>
<staticText>
<reportElement x="420" y="0" width="69" height="24"/>
<text>
<![CDATA[Engine: ]]>
</text>
</staticText>
</band>
</pageHeader>
<detail>
<band height="30">
<textField>
<reportElement x="0" y="0" width="69" height="24"/>
<textFieldExpression class="java.lang.String">
<![CDATA[$F{tailNum}]]>
</textFieldExpression>
</textField>
<textField>
<reportElement x="140" y="0" width="69" height="24"/>
<textFieldExpression class="java.lang.String">
<![CDATA[$F{aircraftSerial}]]>
</textFieldExpression>
</textField>
<textField>
<reportElement x="280" y="0" width="69" height="24"/>
<textFieldExpression class="java.lang.String">
<![CDATA[$F{aircraftModel}]]>
</textFieldExpression>
</textField>
<textField>
<reportElement x="420" y="0" width="69" height="24"/>
<textFieldExpression class="java.lang.String">
<![CDATA[$F{engineModel}]]>
</textFieldExpression>
</textField>
</band>
</detail>
</jasperReport>
调用
private JRDataSource createReportDataSource()
{
JRBeanArrayDataSource dataSource;
AircraftData[] reportRows = initializeBeanArray();
dataSource = new JRBeanArrayDataSource(reportRows);
return dataSource;
}
private AircraftData[] initializeBeanArray()
{
AircraftData[] reportRows = new AircraftData[4];
reportRows[0] = new AircraftData("N263Y", "T-11", "39 ROSCOE TRNR
RACER", "R1830 SERIES");
reportRows[1] = new AircraftData("N4087X", "BA100-163", "BRADLEY
AEROBAT", "R2800 SERIES");
reportRows[2] = new AircraftData("N43JE", "HAYABUSA 1", "NAKAJIMA
KI-43 IIIA", "R1830 SERIES");
reportRows[3] = new AircraftData("N912S", "9973CC", "PA18-150",
"R-1820 SER");
return reportRows;
}
//最后servlet里面调用
JRDataSource dataSource = createReportDataSource();
JasperRunManager.runReportToPdfStream(reportStream,
servletOutputStream, new HashMap(), dataSource);
5.对象集合
和对象数组基本上一样,就是最后生成的是JRBeanCollectionDataSource
private JRDataSource createReportDataSource()
{
JRBeanCollectionDataSource dataSource;
Collection reportRows = initializeBeanCollection();
dataSource = new JRBeanCollectionDataSource(reportRows);
return dataSource;
}
JRDataSource dataSource = createReportDataSource();
JasperRunManager.runReportToPdfStream(reportStream,
servletOutputStream, new HashMap(), dataSource);
6.XML数据成生报表(XML as Datasource)
<?xml version="1.0" encoding="UTF-8"?>
<AircraftData>
<aircraft>
<tail_num>N263Y</tail_num>
<aircraft_serial>T-11</aircraft_serial>
<aircraft_model>39 ROSCOE TRNR RACER</aircraft_model>
<engine_model>R1830 SERIES</engine_model>
</aircraft>
<aircraft>
<tail_num>N4087X</tail_num>
<aircraft_serial>BA100-163</aircraft_serial>
<aircraft_model>BRADLEY AEROBAT</aircraft_model>
<engine_model>R2800 SERIES</engine_model>
</aircraft>
<aircraft>
<tail_num>N43JE</tail_num>
<aircraft_serial>HAYABUSA 1</aircraft_serial>
<aircraft_model>NAKAJIMA KI-43 IIIA</aircraft_model>
<engine_model>R1830 SERIES</engine_model>
</aircraft>
<aircraft>
<tail_num>N912S</tail_num>
<aircraft_serial>9973CC</aircraft_serial>
<aircraft_model>PA18-150</aircraft_model>
<engine_model>R-1820 SER</engine_model>
</aircraft>
</AircraftData>
这样获得
JRXmlDataSource xmlDataSource = new JRXmlDataSource(
new BufferedInputStream(getServletConfig().getServletContext()
.getResourceAsStream("/reports/AircraftData.xml")),
"/AircraftData/aircraft");
JREmptyDataSource,JRMapArrayDataSource,JRMapCollectionDataSource,JRBeanArrayDataSource,JRBeanCollectionDataSource,JRXmlDataSource
他们都implements JRDataSource
主要目地就是不从数据库里面取数据,这个方面和Hibernate结合
分享到:
相关推荐
总结来说,JasperReport通过其强大的报表设计能力、灵活的数据处理和动态生成特性,为企业和开发者提供了高效便捷的报表解决方案。结合源码和配套工具,可以满足多样化的需求,提升数据展示的质量和效率。
3. **加载数据源**:将数据库查询结果或其他数据结构绑定到报表,确保数据能够驱动动态列的生成。 4. **生成HTML导出**:在Java代码中,通过`JasperExportManager`的`exportReportToHtmlFile`方法,设置导出参数并...
《JasperReport.pdf》可能是JasperReports的综合教程,涵盖了报表设计、数据处理、动态内容生成等多个方面。它可能会详细介绍JasperReports的各种高级特性,如脚本语言的支持、参数化报表、自定义函数和复杂的过滤...
**标题:“JasperReport动态报表归并行数据”** **正文:** JasperReport是一款强大的开源报表工具,它允许开发者创建复杂、美观的报表,并且支持动态数据处理。在“JasperReport动态报表归并行数据”这个主题中,...
iReport 是一个用于设计 JasperReports 报告模板的图形界面工具,而 JasperReports 则是一款非常流行的 Java 报告工具,它能够从各种数据源生成复杂的报告,并支持多种输出格式,包括 PDF、HTML、Excel 和 CSV 等。...
是一款报表打印组件,是开放源代码组织 中的一个 报表打印工程, JasperReport sf.net 由于 本身并未提供很好的可视化报表设计工具, JasperReport 在之后推出了 iReport ,作为 报表模版编辑软件,具有以下突出的...
- 示例数据:可能有CSV或XML文件,用于测试报表数据绑定。 - 其他资源文件:如图片、字体等,用于报表设计中的特殊效果。 总的来说,这个源码项目为开发者提供了一个学习和实践jasperreport的起点,通过分析和运行...
jasperreport生成多种格式的报表 Jasperreport是一种流行的报表生成工具,能够生成多种格式的报表,包括PDF、HTML、RTF、XML、EXCEL等格式的报表。以下是使用Jasperreport生成多种格式的报表的详细知识点: 一、...
这使得开发者能够灵活地利用业务对象的数据生成报表。 **多数据源支持** jasperreport允许使用多个数据源,这对于处理复杂报表场景非常有用。例如,一个报表可能需要合并来自不同数据库或不同JavaBean的数据。...
JasperReport 中交叉报表的生成需要遵循一定的步骤,包括设置 subDataSets 数据源、填写数据源名称和 SQL 语句、创建交叉报表、设置行字段和列字段、设置详细信息、设置参数、设置数据源和连接、设置 Crosstab 参数...
使用ireport jasperreport 三级(父-子-孙)关联报表的制作和输出,版本号4.7.0,直接导入eclipse即可。 依次选择: File > import > General > Existing Projects into Workspace > Select archive file >压缩包。
总之,JasperReport 4.0.2和iReport 4.0.2是Java开发者生成专业报表的重要工具,提供了强大的设计能力和灵活的数据绑定机制。通过这个压缩包,你可以获得这些工具的最新版本,并利用它们创建出满足业务需求的高质量...
5. **运行时动态生成**:在Java代码中,通过JasperFillManager填充报表并设置适当的参数,使报表在运行时根据数据动态生成表头。 6. **测试和优化**:生成报表后,进行详细测试,确保表头在不同数据集和屏幕尺寸下...
- 数据源:报表数据的来源,可以是数据库查询结果、Java集合、CSV文件等。 - 字段(Fields):报表中的数据单元,对应数据源中的列。 - 表达式(Expressions):用于计算或操作字段值的Java表达式。 - 标签...
在JasperReport中,子报表是用于在主报表内部嵌套其他报表的一个功能,可以用来组织和展示更复杂的结构化数据。标题、描述和标签提示我们,这个例子将围绕如何使用JasperReport创建并集成子报表展开。 首先,我们要...
设计完成后,将jrxml文件部署到Web应用服务器,与Java代码结合,通过Jasperreport API动态生成报表。在Servlet或JSP中调用报表引擎,传入数据和参数,即可在Web页面上显示报表。 9. **高级特性** - **交互式报表*...
- **生成报表**:根据设计好的模板和数据生成最终的报表。 #### 2. iReport概览 iReport是JasperReport的一个图形化设计器,它极大地简化了报表设计的过程。通过拖拽操作即可完成复杂报表的设计,无需手动编辑XML...
JasperReports是一款强大的开源Java报表库,版本2.0.5是其历史版本之一,它为开发者提供了生成XML格式报表的能力,便于在Java Web应用程序中无缝集成。这款插件以其灵活性和易用性著称,尤其在与iReport——一个直观...
JasperReport是一款强大的Java报表工具,它允许开发者创建复杂、多格式的报表,并能与各种数据源集成。本文主要总结了JasperReport报表设计的关键点,包括报表格式定制、数据填充以及显示或打印。 首先,报表格式的...
3. **数据源与查询**:掌握如何定义数据源,编写SQL查询或使用预定义的数据集,以便从数据库或其他数据源获取数据。 4. **报表元素**:学习各种报表元素的使用,如文本字段、表格、图表、图像等,以及如何在报表中...