我现在公司需要做一个打印报表的项目。所以做了一个例子,现在的问题是,ireport4.0做的报表可以正常的生成PDF。但是如果用JAVA代码,读取.jasper文件。生成的PDF却只是一个空的不知道为什么。各位大侠指教哦。/////////////////JAVA Code://///////////////
public class pdfIreport { /**
* @param args
*/
public static void main(String[] args) {
File reportFile = new File("D:\\TEST.jasper");
JasperReport jasperReport = null;
try {
jasperReport = (JasperReport) JRLoader.loadObject(reportFile.getPath());
} catch (JRException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} HashMap<String, String> parameters = new HashMap<String, String>();
parameters.put("barcode", "564789");
// Class.forName("com.mysql.jdbc.Driver");
// Connection conn =
// DriverManager.getConnection("jdbc:mysql://localhost:3306/phpcms",
// "root", "root");
try {
JasperPrint print = JasperFillManager.fillReport(jasperReport, parameters);
// OutputStream output = new FileOutputStream(new
// File("D:\\TEST.pdf"));
JasperExportManager.exportReportToPdfFile(print, "D:\\TEST.pdf");
} catch (JRException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }}//////////////TEST.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="TEST" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="102"/>
<parameter name="barcode" class="java.lang.String"/>
<background>
<band splitType="Stretch"/>
</background>
<title>
<band height="79" splitType="Stretch"/>
</title>
<pageHeader>
<band height="35" splitType="Stretch"/>
</pageHeader>
<columnHeader>
<band height="61" splitType="Stretch"/>
</columnHeader>
<detail>
<band height="125" splitType="Stretch">
<componentElement>
<reportElement mode="Opaque" x="58" y="61" width="118" height="50"/>
<jr:Code39 xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd" textPosition="bottom" displayChecksum="false" displayStartStop="true" extendedCharSetEnabled="false">
<jr:codeExpression><![CDATA[$P{barcode}.trim()]]></jr:codeExpression>
</jr:Code39>
</componentElement>
<componentElement>
<reportElement x="277" y="61" width="200" height="50"/>
<jr:barbecue xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd" type="Code39" drawText="true" checksumRequired="false">
<jr:codeExpression><![CDATA["1234"]]></jr:codeExpression>
</jr:barbecue>
</componentElement>
</band>
</detail>
<columnFooter>
<band height="45" splitType="Stretch"/>
</columnFooter>
<pageFooter>
<band height="54" splitType="Stretch"/>
</pageFooter>
<summary>
<band height="42" splitType="Stretch"/>
</summary>
</jasperReport>
public class pdfIreport { /**
* @param args
*/
public static void main(String[] args) {
File reportFile = new File("D:\\TEST.jasper");
JasperReport jasperReport = null;
try {
jasperReport = (JasperReport) JRLoader.loadObject(reportFile.getPath());
} catch (JRException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} HashMap<String, String> parameters = new HashMap<String, String>();
parameters.put("barcode", "564789");
// Class.forName("com.mysql.jdbc.Driver");
// Connection conn =
// DriverManager.getConnection("jdbc:mysql://localhost:3306/phpcms",
// "root", "root");
try {
JasperPrint print = JasperFillManager.fillReport(jasperReport, parameters);
// OutputStream output = new FileOutputStream(new
// File("D:\\TEST.pdf"));
JasperExportManager.exportReportToPdfFile(print, "D:\\TEST.pdf");
} catch (JRException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }}//////////////TEST.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="TEST" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="102"/>
<parameter name="barcode" class="java.lang.String"/>
<background>
<band splitType="Stretch"/>
</background>
<title>
<band height="79" splitType="Stretch"/>
</title>
<pageHeader>
<band height="35" splitType="Stretch"/>
</pageHeader>
<columnHeader>
<band height="61" splitType="Stretch"/>
</columnHeader>
<detail>
<band height="125" splitType="Stretch">
<componentElement>
<reportElement mode="Opaque" x="58" y="61" width="118" height="50"/>
<jr:Code39 xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd" textPosition="bottom" displayChecksum="false" displayStartStop="true" extendedCharSetEnabled="false">
<jr:codeExpression><![CDATA[$P{barcode}.trim()]]></jr:codeExpression>
</jr:Code39>
</componentElement>
<componentElement>
<reportElement x="277" y="61" width="200" height="50"/>
<jr:barbecue xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd" type="Code39" drawText="true" checksumRequired="false">
<jr:codeExpression><![CDATA["1234"]]></jr:codeExpression>
</jr:barbecue>
</componentElement>
</band>
</detail>
<columnFooter>
<band height="45" splitType="Stretch"/>
</columnFooter>
<pageFooter>
<band height="54" splitType="Stretch"/>
</pageFooter>
<summary>
<band height="42" splitType="Stretch"/>
</summary>
</jasperReport>
解决方案 »
- 最近碰到一个难题,关于java 按钮,icon的
- Java中的"..."是什么意思?
- 要求同时做B/S和C/S的界面,还要求程序模块化,现在正在为选择技术而犯愁
- jmf如何播mpg,avi文件??
- LDAP添加数据问题 急!!!!!
- 老革命碰到新问题,郁闷的说。大家帮我解决一下。
- 帮我看看怎么了?解决就给分~~~~~GUI的问题
- 如何在DesktopPanel 中加载背景图片不影响他对内部窗口的任何操作
- 谁给我一段示例代码:用JDBC存取oracle的大容量数据(Blob,Clob)
- java 小问题,请关注,,,,,
- 求助....JAVA调用com组件
- java调用C中的方法,采用jna,本人不太清楚怎么将c中的方法在java中如何定义
barcode4j-2.0.jar
commons-collections.jar
commons-digester.jar
commons-logging.jar
groovy-all-1.7.5.jar
iText-2.1.7.jar
jasperreports-4.0.0.jar
mysql-connector-jara-5.1.13-bin.jar
思路是正确的,方法用错了。
JasperFillManager.fillReport(inputStream, parameters, connection),在填充报表的时候应该把当前的数据库连接传递进去,否则拿不到数据。
说明一点:如果你的报表里面不需要什么参数的话,可以直接传个null进去