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.字段匹配
必须进行字段匹配 否则还是不能进行传值