1

如何使用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);
  }
}
4

2 回答 2

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)
于 2013-07-11T09:11:34.723 回答
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();
于 2018-10-08T13:47:14.700 回答