Home
Analytics
Trouble creating EXCEL file using API
Abdel
Hi all,
In my application i am not use BIRT viewer for a particular report. Customers need to directly download this report and I have the below code to do so:
IReportRunnable design;
ServletContext sc = request.getSession().getServletContext();
this.birtReportEngine = BirtEngine.getBirtEngine(sc);
HTMLRenderContext renderContext = new HTMLRenderContext();
renderContext.setBaseImageURL(request.getContextPath()+"/images");
renderContext.setImageDirectory(sc.getRealPath("/images"));
logger.log(Level.FINE, "image directory " + sc.getRealPath("/images"));
System.out.println("stdout image directory " + sc.getRealPath("/images"));
HashMap<String, HTMLRenderContext> contextMap = new HashMap<String, HTMLRenderContext>();
contextMap.put(EngineConstants.APPCONTEXT_HTML_RENDER_CONTEXT, renderContext );
try {
design = birtReportEngine.openReportDesign( sc.getRealPath("/report")+"/"+"listExport.rptdesign");
IRunAndRenderTask task = birtReportEngine.createRunAndRenderTask(design);
task.setAppContext(contextMap);
String filename = "SVC_Export.xls";
response.setContentType("application/excel");
response.setHeader("Content-Disposition", "attachment; filename=" + filename);
EXCELRenderOption options = new EXCELRenderOption();
options.setOutputFormat(EXCELRenderOption.OUTPUT_FORMAT_HTML);
options.setOutputStream(response.getOutputStream());
options.setOutputFileName(filename);
task.setRenderOption(options);
task.run();
task.close();
}catch (Exception e){
e.printStackTrace();
throw new ServletException( e );
}
Unfortunatly, the downloaded file is not named the SVC_Export.xls instead, I get a file named same as the servlet and not as excel file. If i rename the file after downloading it.. it opens up good in EXCEL.. How can I solve this.
Also please check if my rendering options are correct?
Please advice, thanks in advance,
Abdel Olakara
Find more posts tagged with
Comments
rmurphy
Hi Abdel,
I believe the correct content type for Excel is "application/vnd.ms-excel". You also are specifying an output type of HTML.
Attached is a sample program that I use to test with.
Rob
Abdel
Thanks! now my reporting is getting generated properly :-)