2013-07-08 122 views
1

如何直接使用java代码将BIRT报告导出为ex​​cel。 我无法连接到数据库。我打开了Excel表单,但没有从数据库中获取内容。以excel格式导出BIRT报告

这里是我的代码:

public void openExcelReport() throws IOException, ServletException { 

    String reportFile = "testreport.rptdesign"; 

    IReportEngine birtReportEngine = null; 
    EngineConfig conf = null; 

    HttpServletResponse resp = ServletActionContext.getResponse(); 
    request = ServletActionContext.getRequest(); 
    resp.setContentType("application/vnd.ms-excel"); 
    String fileName = "BE-Mechanical-2010-11"; 
    resp.setHeader("Content-disposition", "attachment; filename=" + fileName); 
    ServletContext sc = request.getSession().getServletContext(); 

    try { 
    conf = new EngineConfig(); 
    conf.setEngineHome("ReportEngine"); 
    conf.setLogConfig(null, Level.FINE); 
    IReportEngineFactory factory = (IReportEngineFactory) Platform 
     .createFactoryObject(IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY); 
    birtReportEngine = factory.createReportEngine(conf); 

    IReportRunnable design = null; 
    // Open report design 
    design = birtReportEngine.openReportDesign(sc.getRealPath("/birt_files/" 
     + reportFile)); 
    // create task to run and render report 
    IRunAndRenderTask task = birtReportEngine.createRunAndRenderTask(design); 

    // set output options 
    HTMLRenderOption options = new HTMLRenderOption(); 
    options.setOutputFormat("html"); 

    options.setOutputStream(resp.getOutputStream()); 
    task.setRenderOption(options); 
    // run report 
    task.run(); 
    task.close(); 

    } catch (Exception e) { 
    e.printStackTrace(); 
    throw new ServletException(e); 
    } 
} 
+0

是否要生成Excel文件?为什么在这种情况下设置'HTMLRenderOption'? – Claude

回答

0

我不知道它可以帮助或没有,但.. 在这种情况下,你需要你的XML文件,是什么意思reportFileFullPath如果 你XML显示记录,您将在excel上也可以看到记录。

def reportFileFullPath = "${reportHome}${File.separator}${reportName}.rptdesign" 

     if(File.separator.equals("/")) 
      reportFileFullPath = reportFileFullPath.replace("\\", File.separator) 
     else 
      reportFileFullPath = reportFileFullPath.replace("/", File.separator) 

     def IReportRunnable reportDesign = reportEngine.openReportDesign(reportFileFullPath)