如何生成动态报告Java

问题描述 投票:-2回答:2

我尝试创建动态报告,但发生了错误。有人为创建动态报告Java提供了一些解决方案。

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import net.sf.dynamicreports.jasper.builder.JasperReportBuilder;
import net.sf.dynamicreports.report.builder.DynamicReports;
import net.sf.dynamicreports.report.builder.column.Columns;
import net.sf.dynamicreports.report.builder.component.Components;
import net.sf.dynamicreports.report.builder.datatype.DataTypes;
import net.sf.dynamicreports.report.constant.HorizontalAlignment;
import net.sf.dynamicreports.report.exception.DRException;
public class NewClass {
 public static void main(String[] args) {
 Connection connection = null;
try {
    Class.forName("com.mysql.jdbc.Driver");
    connection = DriverManager.getConnection(
                "jdbc:mysql://localhost:3306/sts","john", "pswrd");
} catch (SQLException e) {
    e.printStackTrace();
    return;
} catch (ClassNotFoundException e) {
    e.printStackTrace();
    return;
}

JasperReportBuilder report = DynamicReports.report();//a new report
report
  .columns(
      Columns.column("Customer Id", "customerid", DataTypes.integerType()),
      Columns.column("Name", "customername", DataTypes.stringType()),
      Columns.column("Address", "address", DataTypes.stringType()),
      Columns.column("Date", "dates", DataTypes.dateType()))
  .title(//title of the report
      Components.text("SimpleReportExample")
      .setHorizontalAlignment(HorizontalAlignment.CENTER))
      .pageFooter(Components.pageXofY())//show page number on the page footer
      .setDataSource("SELECT customerid, customername,address,dates FROM customersdetails", 
                              connection);

try {
            //show the report
    report.show();

            //export the report to a pdf file
    report.toPdf(new FileOutputStream("D:/report.pdf"));
} catch (DRException e) {
    e.printStackTrace();
} catch (FileNotFoundException e) {
    e.printStackTrace();
}
 }
}

我试图创建动态报告,但发生错误。

例外:

Exception in thread "main" java.lang.NoSuchMethodError: net.sf.jasperreports.engine.util.JRLoader.getLocationInputStream(Ljava/lang/String;)Ljava/io/InputStream;
at net.sf.jasperreports.engine.JRPropertiesUtil.loadProperties(JRPropertiesUtil.java:99)    at net.sf.jasperreports.engine.JRPropertiesUtil.loadProperties(JRPropertiesUtil.java:99)
at net.sf.jasperreports.engine.DefaultJasperReportsContext.initProperties(DefaultJasperReportsContext.java:94)
at net.sf.jasperreports.engine.DefaultJasperReportsContext.<init>(DefaultJasperReportsContext.java:71)
at net.sf.jasperreports.engine.DefaultJasperReportsContext.<clinit>(DefaultJasperReportsContext.java:59)
at net.sf.dynamicreports.design.transformation.StyleResolver.getFont(StyleResolver.java:95)
at net.sf.dynamicreports.design.transformation.StyleResolver.getFont(StyleResolver.java:71)
at net.sf.dynamicreports.design.transformation.StyleResolver.getFontHeight(StyleResolver.java:52)
at net.sf.dynamicreports.design.transformation.TemplateTransform.getTextFieldHeight(TemplateTransform.java:981)
at net.sf.dynamicreports.design.transformation.ComponentTransform.textField(ComponentTransform.java:334)
at net.sf.dynamicreports.design.transformation.ComponentTransform.component(ComponentTransform.java:154)
at net.sf.dynamicreports.design.transformation.ComponentTransform.list(ComponentTransform.java:287)
at net.sf.dynamicreports.design.transformation.BandTransform.band(BandTransform.java:184)
at net.sf.dynamicreports.design.transformation.BandTransform.transform(BandTransform.java:74)
at net.sf.dynamicreports.design.base.DRDesignReport.transform(DRDesignReport.java:136)
at net.sf.dynamicreports.design.base.DRDesignReport.<init>(DRDesignReport.java:108)
at net.sf.dynamicreports.design.base.DRDesignReport.<init>(DRDesignReport.java:100)
at net.sf.dynamicreports.jasper.builder.JasperReportBuilder.toJasperReportDesign(JasperReportBuilder.java:261)
at net.sf.dynamicreports.jasper.builder.JasperReportBuilder.getJasperParameters(JasperReportBuilder.java:288)
at net.sf.dynamicreports.jasper.builder.JasperReportBuilder.toJasperPrint(JasperReportBuilder.java:299)
at net.sf.dynamicreports.jasper.builder.JasperReportBuilder.show(JasperReportBuilder.java:328)
at Robb.NewClass.main(NewClass.java:60)
java swing nosuchmethoderror
2个回答
0
投票

您需要在项目中添加jar

“这些jar是创建动态jasper所必需的。</p


0
投票

请看下面的链接您可以创建动态报告绕过JSON数据和模板https://smart-report.herokuapp.com/jsonDataSource

© www.soinside.com 2019 - 2024. All rights reserved.