• jasperreports实现pdf文档的生成


    1.导入jar包(pom.xml构建)

    <dependencies>
    		<dependency>
    			<groupId>com.lowagie</groupId>
    			<artifactId>itext</artifactId>
    			<version>4.2.1</version>
    		</dependency>
    		<dependency>
    			<groupId>com.itextpdf</groupId>
    			<artifactId>itext-asian</artifactId>
    			<version>5.2.0</version>
    		</dependency>
    
    		
    		<!-- oracle数据库驱动,需要手动安装 -->
    		<dependency>
    			<groupId>com.oracle</groupId>
    			<artifactId>ojdbc6</artifactId>
    			<version>11.2.0.1.0</version>
    		</dependency>
    		<!-- jasperreport -->
    		<dependency>
    			<groupId>net.sf.jasperreports</groupId>
    			<artifactId>jasperreports</artifactId>
    			<version>5.2.0</version>
    		</dependency>
    		<dependency>
    			<groupId>com.baidu.maven</groupId>
    			<artifactId>bos_crm_domain</artifactId>
    			<version>0.0.1-SNAPSHOT</version>
    		</dependency>
    		<!-- groovy -->
    		<dependency>
    			<groupId>org.codehaus.groovy</groupId>
    			<artifactId>groovy-all</artifactId>
    			<version>2.2.0</version>
    		</dependency>
    
    		<!-- jasperreport -->
    		<dependency>
    			<groupId>net.sf.jasperreports</groupId>
    			<artifactId>jasperreports</artifactId>
    			<version>5.2.0</version>
    			<exclusions>
    				<exclusion>
    					<groupId>com.lowagie</groupId>
    					<artifactId>itext</artifactId>
    				</exclusion>
    			</exclusions>
    		</dependency>  
    	</dependencies>
    
    	<build>
    		<plugins>
    			<plugin>
    				<groupId>org.apache.maven.plugins</groupId>
    				<artifactId>maven-compiler-plugin</artifactId>
    				<version>3.5.1</version>
    				<configuration>
    					<source>1.7</source>
    					<target>1.7</target>
    				</configuration>
    			</plugin>
    		</plugins>
    	</build>

    2.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="report2" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="286e47bd-f0a8-4480-af4f-a3c4553e6738">
    	<property name="ireport.zoom" value="1.0"/>
    	<property name="ireport.x" value="0"/>
    	<property name="ireport.y" value="27"/>
    	<style name="table">
    		<box>
    			<pen lineWidth="1.0" lineColor="#000000"/>
    		</box>
    	</style>
    	<style name="table_TH" mode="Opaque" backcolor="#F0F8FF">
    		<box>
    			<pen lineWidth="0.5" lineColor="#000000"/>
    		</box>
    	</style>
    	<style name="table_CH" mode="Opaque" backcolor="#BFE1FF">
    		<box>
    			<pen lineWidth="0.5" lineColor="#000000"/>
    		</box>
    	</style>
    	<style name="table_TD" mode="Opaque" backcolor="#FFFFFF">
    		<box>
    			<pen lineWidth="0.5" lineColor="#000000"/>
    		</box>
    	</style>
    	<style name="table 1">
    		<box>
    			<pen lineWidth="1.0" lineColor="#000000"/>
    		</box>
    	</style>
    	<style name="table 1_TH" mode="Opaque" backcolor="#F0F8FF">
    		<box>
    			<pen lineWidth="0.5" lineColor="#000000"/>
    		</box>
    	</style>
    	<style name="table 1_CH" mode="Opaque" backcolor="#BFE1FF">
    		<box>
    			<pen lineWidth="0.5" lineColor="#000000"/>
    		</box>
    	</style>
    	<style name="table 1_TD" mode="Opaque" backcolor="#FFFFFF">
    		<box>
    			<pen lineWidth="0.5" lineColor="#000000"/>
    		</box>
    	</style>
    	<subDataset name="Table Dataset 1" uuid="498dc51b-6cc6-416a-a7d1-2763a61727c4"/>
    	<subDataset name="Table Dataset 2" uuid="6da0b8af-a1e2-4b15-8640-ae77a590da68"/>
    	<subDataset name="Table Dataset 3" uuid="6806ec02-e14e-478e-b69a-1fd51a93cd31"/>
    	<parameter name="comp" class="java.lang.String"/>
    	<queryString>
    		<![CDATA[select * from T_COURIER t]]>
    	</queryString>
    	<field name="company" class="java.lang.String"/>
    	<field name="name" class="java.lang.String"/>
    	<background>
    		<band splitType="Stretch"/>
    	</background>
    	<title>
    		<band height="79" splitType="Stretch">
    			<textField>
    				<reportElement x="125" y="59" width="100" height="20" uuid="66b58fb1-01ef-4277-ba9a-16fb0fca6b79"/>
    				<textElement>
    					<font fontName="宋体" pdfFontName="STSong-Light" pdfEncoding="UniGB-UCS2-H" isPdfEmbedded="true"/>
    				</textElement>
    				<textFieldExpression><![CDATA[$P{comp}]]></textFieldExpression>
    			</textField>
    		</band>
    	</title>
    	<pageHeader>
    		<band height="35" splitType="Stretch"/>
    	</pageHeader>
    	<columnHeader>
    		<band height="61" splitType="Stretch">
    			<staticText>
    				<reportElement x="104" y="41" width="100" height="20" uuid="bbce2650-4d21-4404-947a-89847081e5bc"/>
    				<textElement>
    					<font fontName="宋体" pdfFontName="STSong-Light" pdfEncoding="UniGB-UCS2-H" isPdfEmbedded="true"/>
    				</textElement>
    				<text><![CDATA[姓名]]></text>
    			</staticText>
    			<staticText>
    				<reportElement x="4" y="41" width="100" height="20" uuid="01b2ebc7-a4fe-4987-bfb2-a55979a83144"/>
    				<textElement>
    					<font fontName="宋体" pdfFontName="STSong-Light" pdfEncoding="UniGB-UCS2-H" isPdfEmbedded="true"/>
    				</textElement>
    				<text><![CDATA[公司]]></text>
    			</staticText>
    		</band>
    	</columnHeader>
    	<detail>
    		<band height="125" splitType="Stretch">
    			<textField>
    				<reportElement x="104" y="0" width="100" height="20" uuid="c063769d-59aa-4969-ab66-bc2270481b85"/>
    				<textElement>
    					<font fontName="宋体" pdfFontName="STSong-Light" pdfEncoding="UniGB-UCS2-H" isPdfEmbedded="true"/>
    				</textElement>
    				<textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
    			</textField>
    			<textField>
    				<reportElement x="4" y="0" width="100" height="20" uuid="99b612be-749c-41b1-9916-038c6a52ef08"/>
    				<textElement>
    					<font fontName="宋体" pdfFontName="STSong-Light" pdfEncoding="UniGB-UCS2-H" isPdfEmbedded="true"/>
    				</textElement>
    				<textFieldExpression><![CDATA[$F{company}]]></textFieldExpression>
    			</textField>
    		</band>
    	</detail>
    	<columnFooter>
    		<band height="45" splitType="Stretch"/>
    	</columnFooter>
    	<pageFooter>
    		<band height="54" splitType="Stretch"/>
    	</pageFooter>
    	<summary>
    		<band height="42" splitType="Stretch"/>
    	</summary>
    </jasperReport>
    

      文件是由软件自动生成的,无需手动写。

    3.Demo编写

    在这里进行数据的数据查询需要连接驱动

      使用原生的jdbc代码进行数据可的访问

    package com.baidu.test01;
    
    import java.io.FileOutputStream;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import net.sf.jasperreports.engine.JRExporterParameter;
    import net.sf.jasperreports.engine.JasperCompileManager;
    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.export.JRPdfExporter;
    
    import com.baidu.bos_crm_domain.domain.Courier;
    
    public class DemoJavaPdf {
    	public static void main(String[] args) throws Exception {
    		/**
    		 * 查询数据
    		 */
    		// 查询出 满足当前条件 结果数据
    		List<Courier> c = connOr();
    		// 下载导出
    		// 设置头信息
    		// ServletActionContext.getResponse().setContentType("application/pdf");
    		// String filename = "运单数据.pdf";
    		// String agent = ServletActionContext.getRequest()
    		// .getHeader("user-agent");
    		// filename = FileUtils.encodeDownloadFilename(filename, agent);
    		// ServletActionContext.getResponse().setHeader("Content-Disposition",
    		// "attachment;filename=" + filename);
    		// 根据 jasperReport模板 生成pdf
    		// 读取模板文件
    		String jrxml ="C:\Users\Administrator\Desktop\report2.jrxml";
    		JasperReport report = JasperCompileManager.compileReport(jrxml);
    		// 设置模板数据
    		// Parameter变量
    		Map<String, Object> paramerters = new HashMap<String, Object>();
    		paramerters.put("comp", "传智播客");
    		// Field变量
    		JasperPrint jasperPrint = JasperFillManager.fillReport(report,
    				paramerters, new JRBeanCollectionDataSource(c));
    		//System.out.println(wayBills);
    		// 生成PDF客户端
    		 JRPdfExporter exporter = new JRPdfExporter();
    		 exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
    		 exporter.setParameter(JRExporterParameter.OUTPUT_STREAM,
    		 new FileOutputStream("111123.pdf"));
    		 exporter.exportReport();// 导出
    		// ServletActionContext.getResponse().getOutputStream().close();
    
    		// return NONE;
    
    	}
    
    	public static List<Courier> connOr() {
    		List<Courier> list=new ArrayList<Courier>();
    		try {
    			// 加载驱动
    			Class.forName("oracle.jdbc.driver.OracleDriver");
    			// 创建连接Connection
    			Connection conn = DriverManager.getConnection(
    					"jdbc:oracle:thin:@192.168.189.189:1521:ORCL", "bos",
    					"root");
    			// 得到执行sql的statement对象
    			// conn.createStatement();
    			PreparedStatement ps = conn
    					.prepareStatement("select * from T_COURIER t");
    			// 执行语句,并返回结果
    			ResultSet rs = ps.executeQuery();
    			// 处理结果
    			while (rs.next()) {
    				Courier u = new Courier();
    				u.setId(rs.getInt(1));
    				u.setCompany(rs.getString(3));
    				u.setName(rs.getString(6));
    				list.add(u);
    			}
    			System.out.println(list);
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		return list;
    	}
    }

    注意事项:

    a.在创建jrxml文件时需要注意

    在进行赋值时会不一样,因为在创建模板的时候可以看到

    在内容的显示的时候也是不一样的

    $P   是由parameters产生的

    $F  是由fields产生的

    所以在产生数据时会不一样

    b.字段匹配

    必须进行字段匹配 否则还是不能进行传值

  • 相关阅读:
    maven 手工装入本地包
    一个简单的算法--找出样本中出现次数最多的数字
    tortoise Git 访问题
    python 的数值
    python 的运算符
    python3代码运行器
    python 3.X基础
    Python 3.X和Python 2.X的区别
    文件操作
    函数讲解
  • 原文地址:https://www.cnblogs.com/fjkgrbk/p/jasperreports.html
Copyright © 2020-2023  润新知