以excel格式导出BIRT报告

时间:2013-07-08 10:46:09

标签: java

如何使用java代码直接将BIRT报告导出到excel。 我无法连接到数据库。我打开了excel表,但是我没有从数据库中获取其中的内容。

这是我的代码:

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);
  }
}

2 个答案:

答案 0 :(得分:0)

我不知道它有帮助但是...... 在这种情况下,您需要一个reportFileFullPath表示的xml文件 你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)

答案 1 :(得分:0)

此代码对我有用。

        // Open report design
        IReportRunnable design = 
        birtEngine.openReportDesign(sc.getRealPath("/report/") + reportName 
        + ".rptdesign");

        ReportDesignHandle report = (ReportDesignHandle) design.getDesignHandle();

        // create task to run and render report
        task = birtEngine.createRunAndRenderTask(design);

        res.setContentType("application/vnd.ms-excel");
        res.setHeader("Content-Disposition", "attachment; filename=\"" + 
                      "xcel.xls" + "\"");
        EXCELRenderOption options = new EXCELRenderOption();
        options.setOutputFormat("xlsx");
        res.setHeader("Content-Disposition", "inline; filename=report.xlsx");

        options.setOutputFileName("corporate-batches-summary-report.xlsx");
        options.setOutputStream(res.getOutputStream());
        task.setRenderOption(options);
        task.run();
        task.close();