日期:2014-05-17  浏览次数:21033 次

ireport和jasperReport生成统计报表的helloworld

本文只涉及到简单的动态数据传递

首先使用ireport创建模板

?

关于 变量 $p{}格式的,是parameter类型的,可以通过Map传递给JasperReport

Field 可以设置一些可以动态从数据库获取的数据,但是这种类型需要传递给一JasperReport一个Connection类型的对象

?

关于JasperReport的几种文件格式 jrxml是资源文件 其实就是一个xml文件,使用ireport编辑的就是这种文件

jasperReport可以根据jrxml文件编译生成jasper文件,应该就是一种字节码文件

jasper文件就是一种模板,是没有数据的,把数据交给jasper文件之后还可以生成一种jprint文件

通过jprint可以利用JasperReport生成各种格式的输出,如pdf excel html xml

?

代码:

纯静态的一个:

public static void main(String[] args) throws Exception{
		String filename = "src/jasper/report/test/hello.jrxml";
		long startTime = System.currentTimeMillis();
		//编译源文件
		String jasperfile = JasperCompileManager.compileReportToFile(filename);
		//填充数据,这里填充的是空数据
		String jrprintfile = JasperFillManager.fillReportToFile(jasperfile,null,new JREmptyDataSource());
		//输出html文件
		JasperExportManager.exportReportToHtmlFile(jrprintfile);
		//输入pdf文件,需要itext类库
		JasperExportManager.exportReportToPdfFile(jrprintfile);
		//输出xml文件,扩展名是jrpxml
		JasperExportManager.exportReportToXmlFile(jrprintfile,false);
		//下面的代码是输出excel文件的
		File sourceFile = new File(jrprintfile);
		System.out.println(sourceFile.getAbsolutePath());
		JasperPrint printer = (JasperPrint) JRLoader.loadObject(sourceFile);
		
		File destFile = new File(sourceFile.getParent(),printer.getName()+".xls");
		
		JRXlsExporter exporter = new JRXlsExporter();
		
		exporter.setParameter(JRExporterParameter.JASPER_PRINT, printer);
		exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME,destFile.toString());
		exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET,true);
		
		exporter.exportReport();
		
		long endTime = System.currentTimeMillis();
		
		long time = (endTime-startTime);
		
		System.out.println("done in " + time + " ms ...");
	}

?

动态传递数据的:

jrxml文件 2002.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="2002" pageWidth="835" pageHeight="842" columnWidth="795" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
	<parameter name="startTime" class="java.lang.String"/>
	<parameter name="endTime" class="java.lang.String"/>
	<parameter name="titleName" class="java.lang.String"/>
	<background>
		<band/>
	</background>
	<title>
		<band height="476">
			<staticText>
				<reportElement x="568" y="33" width="75" height="20"/>
				<textElement textAlignment="Center" verticalAlignment="Middle">
					<font fontName="宋体" size="12" pdfFontName="STSong-Light" pdfEncoding="UniGB-UCS2-H"/>
				</textElement>
				<text><![CDATA[结束时间:]]></text>
			</staticText>
			<textField isBlankWhenNull="true">
				<reportElement x="643" y="33" width="150" height="20"/>
				<textElement textAlignment="Center" verticalAlignment="Middle">
					<font fontName="宋体" size="12" pdfFontName="STSong-Light" pdfEncoding="UniGB-UCS2-H"/>
				</textElement>
				<textFieldExpression class="java.lang.String"><![CDATA[$P{endTime}]]></textFieldExpression>
			</textField>
			<staticText>
				<reportElement x="0" y="33" width="75" height="20"/>
				<textElement textAlignment="Center" verticalAlignment="Middle">
					<font fontName="宋体" size="12" pdfFontName="STSong-Light" pdfEncoding="UniGB-UCS2-H"/>
				</textElement>
				<text><![CDATA[开始时间:]]></text>
			</staticText>
			<textField isBlankWhenNull="true">
				<reportElement x="75" y="33" width="150" height="20"/>
				<textElement textAlignment="Center