2016-10-26 7 views
0

웹 응용 프로그램에서 데이터베이스로 MongoDB를 사용하고 있습니다. 내 응용 프로그램에서 보고서 생성 기능을 사용하여 사용 가능한 레코드 및 필드 목록이 표시되고 사용 가능한 필드의 전체 또는 일부를 선택한 다음 선택한 사용자의 데이터가 포함 된 PDF 보고서가 생성됩니다. 전지.MongoDB 용 프로그램 보고서 생성

따라서 사용자가 선택한 필드를 기반으로 런타임에 프로그래밍 방식으로 보고서를 생성해야합니다. 나는 mysql에 대한 비슷한 예제를 발견했다 here.

MySQL 대신 MongoDB에 대한 데이터 소스를 어떻게 추가해야합니까? 이 작업을 수행하는 다른 방법이 있습니까?

Connection connection = null; 
try { 
    Class.forName("com.mysql.jdbc.Driver"); 
    connection = DriverManager.getConnection("jdbc:mysql://hostname:port/dbname","username", "password"); 
} catch (SQLException e) { 
    e.printStackTrace(); 
    return; 
} catch (ClassNotFoundException e) { 
    e.printStackTrace(); 
    return; 
} 

JasperReportBuilder report = DynamicReports.report(); 
report 
    .columns(
     Columns.column("Customer Id", "id", DataTypes.integerType()), 
     Columns.column("First Name", "first_name",   DataTypes.stringType()), 
     Columns.column("Last Name", "last_name", DataTypes.stringType()), 
     Columns.column("Date", "date", DataTypes.dateType())) 
    .title(Components.text("SimpleReportExample") 
     .setHorizontalAlignment(HorizontalAlignment.CENTER)) 
     .pageFooter(Components.pageXofY()) 
     .setDataSource("SELECT id, first_name, last_name, date FROM customers", 
           connection); 
try { 
    report.show(); 
    report.toPdf(new FileOutputStream("c:/report.pdf")); 
} catch (DRException e) { 
    e.printStackTrace(); 
} catch (FileNotFoundException e) { 
    e.printStackTrace(); 
} 

답변

0

아마도 지금까지 질문을 풀었을 것입니다.하지만 다른 사람이 대답을 찾고 있다면 어쨌든 대답했습니다. 이 대상에 대해 JRBeanCollectionDataSource (..)를 사용할 수 있습니다. 동적 보고서는 여기에서 어떻게 수행하는지 예제를 만들었습니다. http://www.dynamicreports.org/examples/collectiondatasourcereport

MongoDB에서 데이터를 가져 와서 JRBeanCollectionDataSource에로드하기 만하면됩니다. 그런 다음 setDataSource (..)를 사용하여 보고서에 설정하십시오.