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