简体   繁体   English

Jasper 报告预览显示字段中的数据,但在通过 java 生成报告时它会打印 NULL

[英]Jasper report preview shows data in field but while generating report through java it prints NULL

Jasperreport successfully generated (JAsperTest.pdf ) with below exception but It didn't print any integer values in ID field. Jasperreport 成功生成 (JAsperTest.pdf ),但有以下异常,但它没有在 ID 字段中打印任何整数值。 It prints only NULL in ID field.它在 ID 字段中仅打印 NULL。 But preview in jasper tool shows all integer values in ID field and not in report generated through java code.但是 jasper 工具中的预览显示 ID 字段中的所有整数值,而不是通过 java 代码生成的报告中。

"PM net.sf.jasperreports.engine.export.PdfGlyphRenderer determinePatchedItext
WARNING: Unpatched iText found, cannot use glyph rendering"

This question was asked in other forum but no solution found.在其他论坛中提出了这个问题,但没有找到解决方案。 Please help me with the solution.请帮我解决。 I tried removing itext5.5.0 jar to itext 7 jar but which resulted in error.我尝试将 itext5.5.0 jar 删除到 itext 7 jar 但导致错误。

Jar files included in lib folder : https://imgur.com/lHZR60t包含在 lib 文件夹中的 Jar 文件: https : //imgur.com/lHZR60t

JasperTest.java JasperTest.java

import java.io.File;
    import java.io.IOException;
    import java.util.HashMap;
    import java.util.Map;

    import net.sf.jasperreports.engine.JRDataSource;
    import net.sf.jasperreports.engine.JREmptyDataSource;
    import net.sf.jasperreports.engine.JRException;
    import net.sf.jasperreports.engine.JasperCompileManager;
    import net.sf.jasperreports.engine.JasperExportManager;
    import net.sf.jasperreports.engine.JasperFillManager;
    import net.sf.jasperreports.engine.JasperPrint;
    import net.sf.jasperreports.engine.JasperReport;
    public class JasperClass {

       public static void main(String[] args) throws JRException, IOException {

            // Compile jrxml file.
           JasperReport jasperReport = JasperCompileManager
                   .compileReport("C:/repo/JasperTest/Jaspertest.jrxml");

           // Parameters for report
           Map<String, Object> parameters = new HashMap<String, Object>();

           // DataSource
           // This is simple example, no database.
           // then using empty datasource.
           JRDataSource dataSource = new JREmptyDataSource();

           JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,
                   parameters, dataSource);


           // Make sure the output directory exists.
           File outDir = new File("C:/repo/JasperTest");
           outDir.mkdirs();

           // Export to PDF.
           JasperExportManager.exportReportToPdfFile(jasperPrint,
                   "C:/repo/JasperTest/Jaspertest.pdf");

           System.out.println("Done!");
       }
    }

JasperTest.jrxml JasperTest.jrxml

<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.4.0.final using JasperReports Library version 6.4.1  -->
<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="Jaspertest" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="98c6f0de-1e25-4ff3-b982-cfa45f54b507">
    <property name="com.jaspersoft.studio.data.sql.tables" value="Y2l0eSAsMTUsMTUsMTFlZThiNTgtMzM2OC00ZmQ3LWEzOTYtY2ZhMTM4MzllMjZhOw=="/>
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="Dataadaptertest.xml"/>
    <queryString language="SQL">
        <![CDATA[SELECT ID
FROM city]]>
    </queryString>
    <field name="ID" class="java.lang.Integer"/>
    <group name="ID">
        <groupExpression><![CDATA[$F{ID}]]></groupExpression>
    </group>
    <background>
        <band splitType="Stretch"/>
    </background>
    <title>
        <band height="75" splitType="Stretch">
            <staticText>
                <reportElement x="100" y="10" width="100" height="30" uuid="fe0a9fb7-deef-4393-a835-7cf9e41b8bef"/>
                <text><![CDATA[Test Successfull]]></text>
            </staticText>
        </band>
    </title>
    <columnHeader>
        <band height="63" splitType="Stretch">
            <staticText>
                <reportElement x="89" y="33" width="100" height="30" uuid="c2a5e228-a3f1-42fc-8064-688191cb7633"/>
                <text><![CDATA[ID]]></text>
            </staticText>
        </band>
    </columnHeader>
    <detail>
        <band height="46" splitType="Stretch">
            <textField>
                <reportElement x="89" y="10" width="100" height="30" uuid="126f1743-5bae-4e84-8bc6-9b36c2a808cc"/>
                <textFieldExpression><![CDATA[$F{ID}]]></textFieldExpression>
            </textField>
        </band>
    </detail>
</jasperReport>

PROBLEM SOLVED.问题解决了。 Now I could see data in my report.现在我可以在我的报告中看到数据。 I made a Connection to SQL as said by Alex.正如亚历克斯所说,我与 SQL 建立了连接。 Thank you.谢谢你。 I am pasting Code below for reference.我在下面粘贴代码以供参考。 avaCallJasperReport.java. avaCallJasperReport.java。

import java.io.File;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;

import net.sf.jasperreports.engine.JRException;
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.export.JRPdfExporter;
import net.sf.jasperreports.export.ExporterInput;
import net.sf.jasperreports.export.OutputStreamExporterOutput;
import net.sf.jasperreports.export.SimpleExporterInput;
import net.sf.jasperreports.export.SimpleOutputStreamExporterOutput;
import net.sf.jasperreports.export.SimplePdfExporterConfiguration;

import conn.ConnectionUtils;

public class avaCallJasperReport {

    public static void main(String[] args) throws JRException,
            ClassNotFoundException, SQLException {

        String reportSrcFile = "C:/repo/JasperTest/Jaspertest.jrxml";

        // First, compile jrxml file.
        JasperReport jasperReport =    JasperCompileManager.compileReport(reportSrcFile);

        Connection conn = ConnectionUtils.getConnection();

        // Parameters for report
        Map<String, Object> parameters = new HashMap<String, Object>();

        JasperPrint print = JasperFillManager.fillReport(jasperReport,
                parameters, conn);

        // Make sure the output directory exists.
        File outDir = new File("C:/repo/JasperTest");
        outDir.mkdirs();

        // PDF Exportor.
        JRPdfExporter exporter = new JRPdfExporter();

        ExporterInput exporterInput = new SimpleExporterInput(print);
        // ExporterInput
        exporter.setExporterInput(exporterInput);

        // ExporterOutput
        OutputStreamExporterOutput exporterOutput = new SimpleOutputStreamExporterOutput(
                "C:/repo/JasperTest/FirstJasperReport.pdf");
        // Output
        exporter.setExporterOutput(exporterOutput);

        //
        SimplePdfExporterConfiguration configuration = new SimplePdfExporterConfiguration();
        exporter.setConfiguration(configuration);
        exporter.exportReport();

        System.out.print("tttt!");
    }
}

MySQLconnUtils.Java MySQLconnUtils.Java

package conn;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class MySQLconnUtils {



        public static Connection getMySQLConnection()
                throws ClassNotFoundException, SQLException {
            String hostName = "localhost";
            String dbName = "world";
            String userName = "root";
            String password = "root";
            return getMySQLConnection(hostName, dbName, userName, password);
        }

        public static Connection getMySQLConnection(String hostName, String dbName,
                String userName, String password) throws SQLException,
                ClassNotFoundException {

            Class.forName("com.mysql.jdbc.Driver");

            System.out.println("Get qq ... ");
            String connectionURL = "jdbc:mysql://" + hostName + ":3306/" + dbName;

            Connection conn = DriverManager.getConnection(connectionURL, userName,
                    password);
            return conn;
        }
    }

ConnectionUtils.Java连接实用程序

package conn;

import java.sql.Connection;
import java.sql.SQLException;

public class ConnectionUtils {

    public static Connection getConnection() throws SQLException,
            ClassNotFoundException {

        // Using Oracle
        // You may be replaced by other Database.
        return MySQLconnUtils.getMySQLConnection();
    }

    //
    // Test Connection ...
    //
    public static void main(String[] args) throws SQLException,
            ClassNotFoundException {

        System.out.println("Get connection ... ");

        // Get a Connection object
        Connection conn = ConnectionUtils.getConnection();

        System.out.println("Get connection " + conn);

        System.out.println("Done!");
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM