需要的jar包去官网下载
可能需要的jar包
1.ireport的jsp 打印(ireport转PDF,japser要在ireport里preview设置成pdf版的)
前台定义显示pdf的iframe
src对应后台action
action具体方法:
public void PrintPdf(Map<String,Object> map) throws Exception{
//得到需要显示的japser
String path = (String) map.get("realpath");
File reportFile = new File(path);
//japser解析器
JasperPrint jasperPrint = null;
//需要导出的pdf名字
String outFileNamePdf = (String) map.get("ireportName")+".pdf";
try
{
//填充了jasper的样式
JasperReport jasperReport = (JasperReport) JRLoader.loadObject(reportFile.getPath());
//得到conn
java.sql.Connection con = CloudDBConnection.getConnection();
// 将集合对象数据填充到JasperReport中.
//参数1:jasper,参数2:param参数数据,参数3:conn连接
jasperPrint = JasperFillManager.fillReport( jasperReport, map, con);
//好多个重构的方法,也可以第一个传流 等等
//jasperPrint = JasperFillManager.fillReport( request.getInputStream(), map, con);
//导出到服务器或硬盘
String targetpath = pdfFilePath(outFileNamePdf,"iReport_pdf");
JasperExportManager.exportReportToPdfFile(jasperPrint, targetpath);// 导出pdf文件
//后面的是存放到response的输出流,返回给前台iframe显示 ServletActionContext.getRequest().getSession().setAttribute(ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, jasperPrint);// 将图片保存在session中
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("application/pdf");// 设置输出格式为pdf
OutputStream out = response.getOutputStream();
JRPdfExporter exporter_pfd = new JRPdfExporter(); // pdf导出器
exporter_pfd.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);// 将内存中的图片放入解析器中
exporter_pfd.setParameter(JRExporterParameter.OUTPUT_STREAM, out); // 输出图片
exporter_pfd.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, outFileNamePdf);
// 输出报表
exporter_pfd.exportReport();
// 刷新删除缓存
out.flush();
out.close();
con.close();
}
catch (Exception e)
{
e.printStackTrace();
}
return;
}
2.ireport另存为excel(japser要在ireport里preview设置成excel)
前台 window.location.href 指向后台action
action具体方法:
public void PrintExcel(Map<String,Object> map) throws Exception{
String path = (String) map.get("realpath");
File reportFile = new File(path);
JasperPrint jasperPrint = null;
String outFileNameExcel = (String) map.get("ireportName")+".xls";
try
{
JasperReport jasperReport = (JasperReport) JRLoader.loadObject(reportFile.getPath());
java.sql.Connection con = CloudDBConnection.getConnection();
// 将集合对象数据填充到JasperReport中.
jasperPrint = JasperFillManager.fillReport( jasperReport, map, con);
HttpServletResponse response = ServletActionContext.getResponse();
response.setCharacterEncoding("UTF-8");
JRXlsExporter exporter=new JRXlsExporter();
exporter.setParameter(JRXlsExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRXlsExporterParameter.OUTPUT_STREAM, response.getOutputStream());
exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);
exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE);
// 输出报表
response.setHeader("Content-Disposition", "attachment;filename="+outFileNameExcel);
response.setContentType("application/vnd_ms-excel");
exporter.exportReport();
con.close();
}
catch (Exception e)
{
e.printStackTrace();
}
return;
}
3.先简单记录,如果以后需要别的功能,再研究
网上简单的例子
http://haohaoxuexi.iteye.com/blog/1204263
http://www.it165.net/pro/html/201305/5877.html