簡體   English   中英

Jasper 報告預覽顯示字段中的數據,但在通過 java 生成報告時它會打印 NULL

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

Jasperreport 成功生成 (JAsperTest.pdf ),但有以下異常,但它沒有在 ID 字段中打印任何整數值。 它在 ID 字段中僅打印 NULL。 但是 jasper 工具中的預覽顯示 ID 字段中的所有整數值,而不是通過 java 代碼生成的報告中。

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

在其他論壇中提出了這個問題,但沒有找到解決方案。 請幫我解決。 我嘗試將 itext5.5.0 jar 刪除到 itext 7 jar 但導致錯誤。

包含在 lib 文件夾中的 Jar 文件: https : //imgur.com/lHZR60t

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

<?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>

問題解決了。 現在我可以在我的報告中看到數據。 正如亞歷克斯所說,我與 SQL 建立了連接。 謝謝你。 我在下面粘貼代碼以供參考。 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

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;
        }
    }

連接實用程序

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