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与iReport简介** JasperReport是一款开源的报告生成库,它...在实际项目中,合理地整合JasperReport到Web应用,不仅可以实现静态数据的展示,还可以实现动态数据的实时更新,为决策提供有力的数据支持。
而"Jasperreport+ireport学习笔记(1).pdf"很可能是作者个人学习JasperReports和IReport的心得体会,可能会包含实战操作步骤、常见问题解决方案以及一些个人技巧分享。 综合以上信息,JasperReports的学习内容可能...
《jasperreport+ireport学习笔记3》是关于企业级报表工具JasperReport与iReport深度结合使用的进阶教程。这两个工具在IT行业中被广泛应用于Web报表的开发,提供了强大的数据可视化和报告生成能力。 JasperReport是...
JasperReport是一个Java库,它允许开发者创建动态的、数据驱动的报表。它的主要特点包括: 1. **灵活性**:支持多种数据源,如数据库、CSV文件、XML等。 2. **多格式输出**:可以导出为PDF、HTML、Excel、CSV、XML...
【ireport开发交叉报表资料及笔记】 交叉报表(Crosstab)是数据分析中常用的一种工具,它可以将数据按行和列的方式进行交叉展示,便于用户更直观地理解数据间的关联和对比。Ireport是一款强大的开源报表设计工具,...
4. **报表填充**:使用JasperFillManager的fillReport方法,传入.jasperreport文件、数据源和参数,生成填充后的报表实例。 5. **报表渲染**:最后,将填充后的报表实例通过JasperExportManager的exportReportToXXX...
- **jasperreoprt+ireport学习笔记1.pdf**:分享了作者的学习经验和技巧,有助于提升报表设计能力。 通过以上知识点的学习和实践,你将能够充分利用IReport在MyEclipse中创建出美观且功能丰富的报表,为你的业务...
通过API,开发者可以方便地在程序中动态生成和展示报表。 9. **框架集成** 对于Java EE应用,JasperReports与iReport的结合通常通过JasperServer实现,它是一个全面的企业报表服务器,提供了报表的发布、权限管理...