2008-10-28 7 views
10

Quelqu'un at-il déjà utilisé un rapport BIRT dans une application de bureau? Je viens de l'environnement .NET et vous pouvez utiliser Crystal Reports pour afficher les rapports dans les applications de bureau. Est-ce possible avec BIRT aussi, sans avoir à configurer un environnement de serveur?BIRT dans une application de bureau

Pouvez-vous me donner des conseils pour atteindre cet objectif?

Merci d'avance.

Répondre

2

Oui, c'est possible. Je l'ai utilisé dans un projet que j'ai fait il y a environ 1 ou 2 ans, donc je vais devoir vous revenir avec les détails. (Bien que les choses peuvent avoir changé depuis) ​​

Voici les plugins je nécessaire:

<?xml version="1.0" encoding="UTF-8"?> 
<classpath> 
    <classpathentry kind="src" path="src"/> 
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> 
    <classpathentry kind="var" path="JUNIT_HOME/junit.jar" sourcepath="JUNIT_SRC_HOME/junitsrc.zip"/> 
    <classpathentry kind="lib" path="lib/log4j-1.2.14.jar"/> 
    <classpathentry kind="lib" path="lib/swt.jar"/> 
    <classpathentry kind="con" path="SWT_CONTAINER"/> 
    <classpathentry kind="lib" path="org.eclipse.birt.chart_2.1.2.v20070205-1728.jar"/> 
    <classpathentry kind="lib" path="org.eclipse.birt.chart.device.extension_2.1.2.v20070205-1728.jar"/> 
    <classpathentry kind="lib" path="org.eclipse.birt.chart.device.swt_2.1.1.v20070205-1728.jar"/> 
    <classpathentry kind="lib" path="org.eclipse.birt.chart.engine_2.1.2.v20070205-1728.jar" sourcepath="C:/Programme/eclipse/plugins/org.eclipse.birt.chart.source_2.2.0.v20070209/src"/> 
    <classpathentry kind="lib" path="org.eclipse.birt.chart.engine.extension_2.1.2.v20070205-1728.jar"/> 
    <classpathentry kind="lib" path="org.eclipse.birt.chart.runtime_2.1.2.v20070205-1728.jar"/> 
    <classpathentry kind="lib" path="org.eclipse.birt.core_2.1.2.v20070205-1728.jar"/> 
    <classpathentry kind="lib" path="org.eclipse.emf.common_2.2.1.v200609210005.jar"/> 
    <classpathentry kind="lib" path="org.eclipse.emf.ecore_2.2.1.v200609210005.jar"/> 
    <classpathentry kind="lib" path="org.eclipse.emf.ecore.xmi_2.2.1.v200609210005.jar"/> 
    <classpathentry kind="lib" path="js.jar"/> 
    <classpathentry kind="lib" path="com.ibm.icu_3.4.5.jar"/> 
    <classpathentry kind="lib" path="org.eclipse.birt.chart.ui_2.1.1.v20070205-1728.jar"/> 
    <classpathentry kind="lib" path="org.eclipse.birt.chart.ui.extension_2.1.2.v20070205-1728.jar"/> 
    <classpathentry kind="lib" path="lib/hsqldb.jar"/> 
    <classpathentry kind="output" path="bin"/> 
</classpath> 
1

Oui, il est possible. Here est une description générale. J'ai utilisé Birt dans un environnement de serveur, mais pour autant que je sache, il existe une interface RenderContext à travers laquelle vous rendez vos rapports comme vous le souhaitez.

0

Il est possible et vous pouvez facilement créer un aperçu du rapport dans un JEditorPane, vous devez télécharger BIRT Runtime et vous pouvez essayer avec le code exemple posté dans this sur le forum Eclipse.

0
package com.passport; 

import java.io.FileOutputStream; 
import java.util.Collection; 
import java.util.Iterator; 


import org.eclipse.birt.core.framework.Platform; 
import org.eclipse.birt.report.engine.api.EngineConfig; 
import org.eclipse.birt.report.engine.api.IGetParameterDefinitionTask; 
import org.eclipse.birt.report.engine.api.IParameterDefnBase; 
import org.eclipse.birt.report.engine.api.IRenderOption; 
import org.eclipse.birt.report.engine.api.IReportEngine; 
import org.eclipse.birt.report.engine.api.IReportEngineFactory; 
import org.eclipse.birt.report.engine.api.IReportRunnable; 
import org.eclipse.birt.report.engine.api.IRunAndRenderTask; 
import org.eclipse.birt.report.engine.api.RenderOption; 

public class EngineReport { 
    private static final long serialVersionUID = 1L;  
    private IReportEngine engine=null; 
    private EngineConfig engineconfig = null; 
    private IReportEngineFactory factory = null; 
    private String sourceReport; 
    private String locationReport; 
    private String reportRealPath = ""; 

public static void main(String[] args){ 
    EngineReport engineReport = new EngineReport(); 
    engineReport.save("src/com/passport/report.rptdesign","c:/tmp/rep.doc"); 
} 

private void save(String sourceReport, String locationReport) { 

    this.sourceReport = sourceReport; 
    this.locationReport = locationReport; 
    IReportRunnable design = null; 
    IRenderOption options = null; 
    try { 
     String reportFormat = locationReport.substring(locationReport.lastIndexOf('.')+1); 
     sourceReport = "src/com/passport/report.rptdesign"; 
     if ((sourceReport != null && (sourceReport.length() > 0))) { 

      engineconfig = new EngineConfig(); 
      reportRealPath = ""; 
      Platform.startup(engineconfig); 
      factory = (IReportEngineFactory) Platform.createFactoryObject(IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY);    
      engine = factory.createReportEngine(engineconfig); 
      design = engine.openReportDesign(reportRealPath+sourceReport);   
      IRunAndRenderTask task = engine.createRunAndRenderTask(design);  

      IGetParameterDefinitionTask taskParam = engine.createGetParameterDefinitionTask(design); 
      Collection<?> params = taskParam.getParameterDefns(false); 
      String paramName = null; 
      Iterator<?> iterOuter = params.iterator(); 
      while (iterOuter.hasNext()) { 
       IParameterDefnBase param = (IParameterDefnBase) iterOuter.next(); 
       paramName = param.getName();     
       if (paramName.equalsIgnoreCase("PR_SOME_PARAM")) { 
        task.setParameterValue(paramName,"someparam"); 
       }     
       else if (paramName.equalsIgnoreCase("PR_SOME_PARAM_2")) { 
        task.setParameterValue(paramName,"someparam2"); 
       } 
      }    
      options = new RenderOption();   
      options.setOutputFormat(reportFormat); 

      FileOutputStream fos = new FileOutputStream(locationReport); 
      options.setOutputStream(fos); 
      task.setRenderOption(options); 
      task.run(); 
      task.close(); 
      engine.destroy(); 
      fos.close(); 

     } 
    } catch(Exception e) { 
     System.out.println(e.toString()); 
    } 
} 

}

Questions connexes