存档

文章标签 ‘jasperreports导出为Excel参考例子’

jasperreports导出为Excel参考例子

2010年1月12日 逝去的风 没有评论

今天在做jasperreports导出excel时出现了点小问题,在网上找了个例子,比较不错.
我将其中的一些代码copy来了

< %
try
{
//Class.forName(oracle.jdbc.driver.OracleDriver);
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
Connection conn = ........
File reportFile = new File("C:\\jsp\\sample.jasper");
String path = reportFile.getAbsolutePath(); //tried getAbsolutePath()
//System.out.println("Absolute Path = " + reportFile.getAbsolutePath());
Map parameters = new HashMap();
parameters.put("myparam",new Integer(2));
JasperPrint jasperPrint = JasperManager.fillReport ( path,parameters, conn);
byte bytes[] = new byte[10];
String result = JasperRunManager.runReportToHtmlFile("C:\\jsp\\sample.jasper" , parameters, conn);
JRXlsExporter exporter = new JRXlsExporter();
ByteArrayOutputStream xlsReport = new ByteArrayOutputStream();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, xlsReport);
exporter.setParameter(JRExporterParameter.OUTPUT_FILE, "C:\\JSP\\");
exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, "sample.xls");
exporter.exportReport();
System.out.println("Sixe of byte array:"+xlsReport.size());
bytes = xlsReport.toByteArray();
response.setContentType("application/vnd.ms-excel");
System.out.println("After JasperPrint = "+result);
response.setContentLength(bytes.length);
xlsReport.close();
OutputStream ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();
}
catch(Exception e)
{e.printStackTrace();}
%>
even i m getting exception but i m able to see my report data on excel file/page and i m able to save it.but there is an exception saying getOutputStream() has already been opened for the response.....
if any thing i forgot or done wrong plese do let me know

阅读全文…