2008-10-28 2 views
10

Использовал ли кто-нибудь отчет BIRT в настольном приложении. Я отправляюсь из среды .NET, и вы можете использовать Crystal Reports для отображения отчетов в настольных приложениях. Возможно ли это с BIRT, без необходимости настройки серверной среды?BIRT в настольном приложении

Можете ли вы дать мне совет, как достичь этой цели?

Заранее спасибо.

ответ

2

Да, это возможно. Я использовал его в проекте, который я сделал около 1-2 лет назад, поэтому мне нужно будет вернуться к вам с подробностями. (Хотя все могло измениться с тех пор)

Вот плагины я необходимо:

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

Да, это возможно. Here - некоторое общее описание. Я использовал Birt в среде сервера, хотя, насколько я знаю, есть интерфейс RenderContext, через который вы делаете свои отчеты так, как хотите.

4

Существует время выполнения BIRT, которое позволяет создавать отчеты из командной строки. Прочитайте this article. Это позволит вам использовать BIRT без сервера. Первоначально отмечено here as an answer to my own question.

5

Если ваше настольное приложение написано на платформе Eclipse Rich Client Platform (RCP), тривиально добавить отчетность. Все, что вам нужно сделать, это добавить плагин org.eclipse.birt.viewer, а затем использовать его.

Вот статья, которая объясняет это: http://digiassn.blogspot.com/2008/08/birt-launch-birt-rcp-application.html

0

Это возможно, и вы можете легко создать предварительный просмотр отчета в JEditorPane, вы должны загрузить BIRT Время воспроизведения, а затем вы можете попробовать пример кода размещенное в this сообщении на форуме 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()); 
    } 
} 

}

Смежные вопросы