Jasperreport+iReport报表设计(二)通用导出页面 痛定思痛。 2022-08-10 05:49 201阅读 0赞 通用导出页面 <%@ page language="java" pageEncoding="GBK"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <%@ page import="java.util.\*"%> <%@ page import="java.sql.\*"%> <%@ page import="net.sf.jasperreports.engine.data.\*" %> <%@ page import="net.sf.jasperreports.engine.\*"%> <%@ page import="net.sf.jasperreports.engine.export.\*" %> <%@ page import="net.sf.jasperreports.j2ee.servlets.ImageServlet"%> <% String root\_path = this.getServletContext().getRealPath("/"); root\_path = root\_path.replace('//', '/'); //报表文件路径 String reportFilePath = root\_path + "arpReport/test.jasper"; //报表参数 Map parameters = new HashMap(); //子报表路径 parameters.put("SUBREPORT\_DIR",root\_path + "arpReport/"); //添加参数 parameters.put("ReportTitle","中国科学院"); System.out.println("Report filePath=="+reportFilePath); int dateType =0; //数据源类型 String expType = "pdf"; //导出文件类型 try\{ //数据源 JRDataSource dataSource = null; //报表填充 JasperPrint jasperPrint = null; //------数据源类型--start----------------------------------------- if(dateType==1)\{ //SQL数据源 Connection conn = null ; jasperPrint = JasperFillManager.fillReport(reportFilePath, parameters, conn); \}else if(dateType==2)\{ //JavaBean数据源 List listBean = null; dataSource = new JRBeanCollectionDataSource(listBean); jasperPrint = JasperFillManager.fillReport(reportFilePath, parameters, dataSource); \}else if(dateType==3)\{ //XML数据源 org.w3c.dom.Document doc = null; dataSource = new JRXmlDataSource(doc,"root/data"); jasperPrint = JasperFillManager.fillReport(reportFilePath, parameters, dataSource); \}else\{ //空数据源 dataSource = new JREmptyDataSource(); jasperPrint = JasperFillManager.fillReport(reportFilePath, parameters, dataSource); \} //------数据源类型--start----------------------------------------- response.reset(); //导出器 JRAbstractExporter exporter = null; //------导出类型--start------------------------------------------- if(expType.equals("excel"))\{ //导出Excel response.setContentType("application/vnd.ms-excel;charset=GBK"); response.setHeader("Content-Disposition","attachment;filename="+new String(("报表打印.xls").getBytes(),"iso8859-1")); exporter = new JRXlsExporter(); exporter.setParameter(JRXlsExporterParameter.IS\_ONE\_PAGE\_PER\_SHEET,Boolean.FALSE); exporter.setParameter(JRXlsExporterParameter.IS\_WHITE\_PAGE\_BACKGROUND,Boolean.FALSE); exporter.setParameter(JRXlsExporterParameter.IS\_REMOVE\_EMPTY\_SPACE\_BETWEEN\_COLUMNS,Boolean.TRUE); //不显示空列 exporter.setParameter(JRXlsExporterParameter.IS\_REMOVE\_EMPTY\_SPACE\_BETWEEN\_ROWS,Boolean.TRUE); //不显示空行 System.out.println("Done excel!"); \}else if(expType.equals("html"))\{ response.setContentType("text/html; charset=GBK"); exporter=new JRHtmlExporter(); request.getSession().setAttribute(ImageServlet.DEFAULT\_JASPER\_PRINT\_SESSION\_ATTRIBUTE, jasperPrint); //报表边框图片设置"arpReport/image?image=",report为你的报表及PX图片所在目录 //exporter.setParameter(JRHtmlExporterParameter.IMAGES\_URI, "arpReport/image?image="); //不使用边框图片 exporter.setParameter(JRHtmlExporterParameter.IS\_USING\_IMAGES\_TO\_ALIGN,Boolean.FALSE); //处理分页 //exporter.setParameter(JRHtmlExporterParameter.BETWEEN\_PAGES\_HTML, ""); System.out.println("Done html!"); \}else\{ //导出PDF response.setContentType("application/pdf;charset=GBK"); exporter = new JRPdfExporter(); //如果保存到硬盘用下面语句 //pdfexporter.setParameter(JRExporterParameter.OUTPUT\_FILE\_NAME, "c://mypdf.pdf"); exporter.setParameter(JRPdfExporterParameter.IS\_ENCRYPTED,Boolean.FALSE); System.out.println("Done pdf!"); \} //------导出类型--end------------------------------------------- //字体处理,加粗和黑体 Map fontsMap = new HashMap(); fontsMap.put(new FontKey("宋体", true, true), new PdfFont("STSong-Light", "UniGB-UCS2-H", true, true, true)); fontsMap.put(new FontKey("黑体", true, true), new PdfFont("simhei.ttf", "Identity-H", true, true, true)); exporter.setParameter(JRExporterParameter.FONT\_MAP, fontsMap); exporter.setParameter(JRExporterParameter.JASPER\_PRINT,jasperPrint); exporter.setParameter(JRExporterParameter.OUTPUT\_STREAM,response.getOutputStream()); exporter.setParameter(JRExporterParameter.CHARACTER\_ENCODING,"GB2312"); exporter.exportReport(); \}catch(Exception e)\{ e.printStackTrace(); \} %>
还没有评论,来说两句吧...