如何使用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);
}
}
答案 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();