在web上运行已经编译好用ireport设计的jasreport报表

import java.io.FileNotFoundException;
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.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.JasperViewer;

/**
 *  使用方法: 
 * 
 * Person p2 = new Person(); p2.setAge("24"); p2.setDepartment("ISoftStone2");
 * p2.setName("测试中文2"); p2.setPassword("1234567892");
 * p2.setPid("2008040516058772hj2"); p2.setSex("man2");
 * 
 * List<Person> list = new ArrayList<Person>(); list.add(p2);
 * 
 * JasperReportUtil jrd = new JasperReportUtil("D:\\workspace\\Person.jasper");
 * jrd.setTitle("测试报表"); 
 * jrd.addMapData("result",12.56);
 * jrd.setLs(list); 
 * jrd.reportMethod(); }
 * 
 */
/**
 * 输出PDF类型的报表
 * 
 * @author kenter
 */
@SuppressWarnings("unchecked")
public class JasperReportUtil {

	private String title;// 报表标题
	private List ls;// 报表数据源
	private String reportPath;// 报表路径
	private Map mapData;// 存放数据,例如标题,结果其他内容等等

	/**
	 * 构造函数
	 */
	public JasperReportUtil(String reportPath) {
		this.setReportPath(reportPath);
		this.mapData = new HashMap();
	}

	public void reportMethod() throws Exception {
		JasperReport jasperReport = null;
		JasperPrint jasperPrint = null;
		this.getMapData().put("reportTitle", this.getTitle());
		try {
			// 实际中编译报表很耗时,采用Ireport编译好的报表
			jasperReport = (JasperReport) JRLoader.loadObject(this
					.getReportPath());
			// 填充报表
			jasperPrint = JasperFillManager.fillReport(jasperReport, this
					.getMapData(), getDataSource());
			boolean isExitOnClose = false;// 关闭不退出
			JasperViewer jasperViewer = new JasperViewer(jasperPrint,
					isExitOnClose);
			jasperViewer.setVisible(true);
		} catch (JRException e) {
			e.printStackTrace();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
	}

	/**
	 * 增加存放数据
	 * @param key 键
	 * @param data 数据
	 */
	public void addMapData(String key, Object data) {
		this.mapData.put(key, data);
	}

	/**
	 * 设置报表数据源
	 * 
	 * @return
	 * @throws Exception
	 */
	public JRDataSource getDataSource() throws Exception {
		JRDataSource datesource = new JRBeanCollectionDataSource(this.getLs());
		return datesource;
	}

	public String getReportPath() {
		return reportPath;
	}

	public void setReportPath(String reportPath) {
		this.reportPath = reportPath;
	}

	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public List getLs() {
		return ls;
	}

	public void setLs(List ls) {
		this.ls = ls;
	}

	public Map getMapData() {
		return mapData;
	}

	public void setMapData(Map mapData) {
		this.mapData = mapData;
	}

}

 
<?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="Person" pageWidth="595" pageHeight="842" columnWidth="535" leftMargin="30" rightMargin="30" topMargin="20" bottomMargin="20">
	<property name="ireport.scriptlethandling" value="0"/>
	<property name="ireport.encoding" value="UTF-8"/>
	<import value="net.sf.jasperreports.engine.*"/>
	<import value="java.util.*"/>
	<import value="net.sf.jasperreports.engine.data.*"/>
	<parameter name="reportTitle" class="java.lang.String"/>
	
	<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"/>
	</background>
	<title>
		<band height="29">
			<textField isBlankWhenNull="false">
				<reportElement key="textField" x="138" y="0" width="258" height="29"/>
				<textElement textAlignment="Center" verticalAlignment="Middle" markup="html">
					<font isBold="true" pdfFontName="Helvetica-Bold"/>
				</textElement>
				<textFieldExpression class="java.lang.String"><![CDATA["<font color='blue' size='5'>"+$P{reportTitle}+"</font>"]]></textFieldExpression>
			</textField>
		</band>
	</title>
	<pageHeader>
		<band/>
	</pageHeader>
	<columnHeader>
		<band/>
	</columnHeader>
	<detail>
		<band height="191">
			<textField isBlankWhenNull="false">
				<reportElement key="textField" x="12" y="113" width="100" height="18"/>
				<textElement verticalAlignment="Top"/>
				<textFieldExpression class="java.lang.String"><![CDATA[$F{pid}]]></textFieldExpression>
			</textField>
			<textField isBlankWhenNull="false">
				<reportElement key="textField" x="100" y="49" width="93" height="18"/>
				<textElement verticalAlignment="Top"/>
				<textFieldExpression class="java.lang.String"><![CDATA[$F{name}]]></textFieldExpression>
			</textField>
			<textField isBlankWhenNull="false">
				<reportElement key="textField" x="227" y="113" width="58" height="18"/>
				<textElement verticalAlignment="Top"/>
				<textFieldExpression class="java.lang.String"><![CDATA[$F{sex}]]></textFieldExpression>
			</textField>
			<textField isBlankWhenNull="false">
				<reportElement key="textField" x="351" y="95" width="100" height="18"/>
				<textElement verticalAlignment="Top"/>
				<textFieldExpression class="java.lang.String"><![CDATA[$F{password}]]></textFieldExpression>
			</textField>
			<textField isBlankWhenNull="false">
				<reportElement key="textField" x="251" y="49" width="100" height="18"/>
				<textElement verticalAlignment="Top"/>
				<textFieldExpression class="java.lang.String"><![CDATA[$F{department}]]></textFieldExpression>
			</textField>
			<textField pattern="" isBlankWhenNull="false">
				<reportElement key="textField" x="451" y="49" width="84" height="18"/>
				<textElement verticalAlignment="Top"/>
				<textFieldExpression class="java.lang.String"><![CDATA[$F{age}]]></textFieldExpression>
			</textField>
			<line>
				<reportElement key="line-1" x="0" y="17" width="535" height="1"/>
			</line>
		</band>
	</detail>
	<columnFooter>
		<band/>
	</columnFooter>
	<pageFooter>
		<band height="24">
			<textField isBlankWhenNull="false">
				<reportElement key="textField" x="387" y="5" width="22" height="18"/>
				<textElement textAlignment="Center" verticalAlignment="Middle"/>
				<textFieldExpression class="java.lang.Integer"><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression>
			</textField>
			<staticText>
				<reportElement key="staticText-2" x="373" y="5" width="14" height="17"/>
				<textElement textAlignment="Center" verticalAlignment="Middle">
					<font size="12" isBold="true" pdfFontName="Helvetica-Bold"/>
				</textElement>
				<text><![CDATA[第]]></text>
			</staticText>
			<staticText>
				<reportElement key="staticText-3" x="409" y="5" width="14" height="17"/>
				<textElement textAlignment="Center" verticalAlignment="Middle">
					<font size="12" isBold="true" pdfFontName="Helvetica-Bold"/>
				</textElement>
				<text><![CDATA[页]]></text>
			</staticText>
		</band>
	</pageFooter>
	<summary>
		<band/>
	</summary>
</jasperReport>

你可能感兴趣的:(java,Web,.net,F#)