当前位置: 首页 > 面试题库 >

使用JasperReports库和MongoDB生成GeneratePDF

游皓
2023-03-14
问题内容

这是我的GeneratePdf.java导入…

  public class GeneratePdf {
        public static void main(String[] args) {
        try {
            JRDataSource ds = getDatasource();
            // - Chargement et compilation du rapport
line32      JasperDesign jasperDesign = JRXmlLoader.load("/home/gocoffee.jrxml");
            JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);

            // - Paramètres à envoyer au rapport
            Map parameters = new HashMap();
            parameters.put("Titre", "Titre");

            // - Execution du rapport
            JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,
parameters, ds);

            // - Création du rapport au format PDF
            JasperExportManager.exportReportToPdfFile(jasperPrint, "home/test2.pdf");
        } catch (JRException e) {
        }
    }

Mongo连接并获取数据():

private static JRDataSource getDatasource() {
        // Retrieve session
        try{
            Mongo m = new Mongo("localhost", 27017);
            DB db = m.getDB("test");
            DBCollection t = db.getCollection("test");
            List<DBObject> list = t.getIndexInfo();
            JRDataSource ds = new JRBeanCollectionDataSource(list);
            return ds;
        } catch (UnknownHostException e) {
            System.out.println("Error mongo connection");
        } catch (Exception e) {
            System.out.println("Other Exception");
        }
        return null;
    }
}

我收到此错误,但我不明白:

run:
17-Feb-2012 17:07:26 org.apache.commons.digester.Digester endElement
SEVERE: End event threw exception
java.lang.reflect.InvocationTargetException
....
....
    at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:156)
    at GeneratePdf.main(GeneratePdf.java:32)

Caused by: net.sf.jasperreports.engine.JRRuntimeException: No query executer factory registered for the 'MongoDbQuery' language.
    at net.sf.jasperreports.engine.util.JRQueryExecuterUtils.getQueryExecuterFactory(JRQueryExecuterUtils.java:64)
    at net.sf.jasperreports.engine.design.JRDesignDataset.queryLanguageChanged(JRDesignDataset.java:1122)
    at net.sf.jasperreports.engine.design.JRDesignDataset.setQuery(JRDesignDataset.java:600)
    at net.sf.jasperreports.engine.design.JasperDesign.setQuery(JasperDesign.java:789)
    ... 28 more

问题答案:

使用JRBeanCollectionDataSource不是使用MongoDB连接器的正确方法。看一下Jaspersoft MongoDB
Connector源附带的测试:

MongoDbDatasource / src / test / java / com / jaspersoft / mongodb /
ReportTest.java

二进制连接器和源代码都在项目页面上。

为了使这个答案保持独立,下面是一个代码片段,显示了如何填充MongoDB报告。这是我上面提到的文件的修改后的摘录。

String mongoURI = "mongodb://bdsandbox6:27017/test";
MongoDbConnection connection = null;
Map<String, Object> parameters = new HashMap<String, Object>();
try {
  connection = new MongoDbConnection(mongoURI, null, null);
  parameters.put(MongoDbDataSource.CONNECTION, connection);
  File jasperFile;
  jasperFile = new File("MongoDbReport.jasper");
  JasperCompileManager.compileReportToFile("MongoDbReport.jrxml", "MongoDbReport.jasper");
  JasperFillManager.fillReportToFile("MongoDbReport.jasper", parameters);
  JasperExportManager.exportReportToPdfFile("MongoDbReport.jrprint");
}
} catch (Exception e) {
  e.printStackTrace();
} finally {
  if (connection != null) {
    connection.close();
  }
}


 类似资料:
  • 我使用iReport设计了我的报告,并用Java编译了它。

  • 我对JasperReports相当陌生,在从MongoDB中正确显示列表数据时遇到了挑战。 我当时正在写一篇文章,但似乎无法使它生效。 我在MongoDB中有以下集合: “行”是一个集合。 在iReport中,它显示为一个列表,这很好。然而,当我按照文章的建议将子数据源更改为

  • 问题内容: 我正在尝试从列表中生成一个简单的 JR 报告。 我一直在 从bean检索name时出错:name 此错误是由于错误的getter方法名引起的,因为jasper使用反射来从bean中获取字段。但是,即使更正了getter方法名称。我不断收到这个例外。还有其他问题吗? 我的 jrxml 文件是 Bean类是 我在这里生成报告 我们是否需要对bean类进行更多修改? 问题答案: 解决方案非常

  • 我已经使用MongoDB启动了一个新的Spring Boot应用程序(2.2.1.RELEASE)。 为了创建一些API文档,我添加了springdoc API: 由于我依赖Spring来处理RESTendpoint的生成,因此我创建了以下简单的存储库: 所以我没有使用的类。 我试图添加一些ProfileRepository中方法的注释,但不会生成任何内容。 : 如何为Spring数据REST存储

  • 我正在创建一个JasperReports的报告,其中只有子报告。 以下是我目前面临的场景。 为了简化问题,让我们只考虑两个 jasper 报告:mainReport 和 subReportFile1。 我的主报告jasper文件如下: 子报表具有以下字段,我已为其创建了以下自定义 Bean 类,并将其作为参数发送到主报表文件。我有具有以下字段的自定义BeanClass: 我正在我的 java 文件

  • 问题内容: 有人知道使用SAX框架(或类似的东西)和Java编写XML的好教程(或有好的示例)吗?就有用的结果而言,搜索产生的很少。我正在尝试从Android应用程序导出,并希望避免尽可能多的内存开销。 问题答案: 有一种非常有用的技术,可以通过 SAX框架 (不是SAX解析器,而是SAX框架)直接从POJO 生成 XML 。该技术可用于 生成XML文档 。 从任意数据结构生成XML http:/