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.字段匹配

必須進行字段匹配 否則還是不能進行傳值
