Jasper6 导出Excle,PDF,World文件

    技术2022-07-10  126

    最近一直在弄Jasper的报表,整理了一个工具类,拿来分享下

    package yjkj.hospital.util;   import java.io.File; import java.io.IOException; import java.util.Map;   import javax.servlet.http.HttpServletResponse;   import net.sf.jasperreports.engine.JRException; import net.sf.jasperreports.engine.JasperFillManager; import net.sf.jasperreports.engine.JasperPrint; import net.sf.jasperreports.engine.JasperPrintManager; import net.sf.jasperreports.engine.JasperReport; import net.sf.jasperreports.engine.JasperReportsContext; import net.sf.jasperreports.engine.SimpleJasperReportsContext; import net.sf.jasperreports.engine.export.HtmlExporter; import net.sf.jasperreports.engine.export.JRPdfExporter; import net.sf.jasperreports.engine.export.ooxml.JRDocxExporter; import net.sf.jasperreports.engine.export.ooxml.JRXlsxExporter; import net.sf.jasperreports.engine.util.JRLoader; import net.sf.jasperreports.export.DocxReportConfiguration; import net.sf.jasperreports.export.PdfReportConfiguration; import net.sf.jasperreports.export.SimpleExporterInput; import net.sf.jasperreports.export.SimpleHtmlExporterConfiguration; import net.sf.jasperreports.export.SimpleHtmlExporterOutput; import net.sf.jasperreports.export.SimpleOutputStreamExporterOutput; import net.sf.jasperreports.export.XlsxReportConfiguration;   import org.slf4j.Logger; import org.slf4j.LoggerFactory;   import yjkj.hospital.util.UtilKeyWord.ReportFileType;   /**  * 报表工具类  * @author XIONG SHIXIN  * @since 2017年4月18日  */ public class UtilReport {          private static final Logger LOG = LoggerFactory.getLogger(UtilReport.class);          /**      * 报表文件导出(PDF,Excle,World)      * <p>@param params 报表需要的参数<p>      * <p>@param filePath 模板文件的绝对路径<p>      * <p>@param fileName 输出文件名<p>      * <p>@param suffix 文件后缀名<p>      * @throws JRException +--+-************      * @throws IOException       */     public static void reportExport(HttpServletResponse response, Map<String, Object> params, String filePath, String fileName, ReportFileType suffix) throws JRException, IOException{         try {             switch (suffix){             case PDF:                 pdfExport(response, params, filePath, fileName, suffix, null);                 break;             case WORLD:                 worldExport(response, params, filePath, fileName, suffix, null);                 break;             case EXCEL:                 excleExport(response, params, filePath, fileName, suffix, null);                 break;             default:                 LOG.error("不支持导出此类文件!");                 throw new JRException("不支持导出此类文件!");              }         } catch (JRException e) {             throw e;         } catch (IOException e) {             throw e;         }              }          /**      * pdf导出方法      * <p>@param response <p>      * <p>@param params 报表需要的参数<p>      * <p>@param filePath 模板文件的绝对路径<p>      * <p>@param fileName 输出文件名<p>      * <p>@param suffix 文件后缀名<p>      * <p>@param pr 输出配置信息<p>      * @throws JRException      * @throws IOException      */     public static void pdfExport(HttpServletResponse response, Map<String, Object> params, String filePath, String fileName,              ReportFileType suffix, PdfReportConfiguration pr) throws JRException, IOException{         JasperPrint jasperPrint;         try {             File jasperFile = new File(filePath);             JasperReport jasperReport = (JasperReport) JRLoader.loadObject(jasperFile);             jasperPrint = JasperFillManager.fillReport(jasperReport, params,                      UtilPersistence.getConnection());             response.setCharacterEncoding("utf-8");             fileName = fileName + "." + suffix.toString();             response.setHeader("Content-Disposition","attachment;" + "filename=" +              new String(fileName.getBytes(), "ISO-8859-1"));             response.setContentType("application/pdf");             JRPdfExporter pdfExporter = new JRPdfExporter();             pdfExporter.setExporterInput(new SimpleExporterInput(jasperPrint));             pdfExporter.setExporterOutput(new SimpleOutputStreamExporterOutput(response.getOutputStream()));             if(!UvUtil.isNull(pr)){                 pdfExporter.setConfiguration(pr);             }             pdfExporter.exportReport();         } catch (JRException e) {             throw e;         } catch (IOException e) {             throw e;         }     }          /**      * World导出方法      * <p>@param response <p>      * <p>@param params 报表需要的参数<p>      * <p>@param filePath 模板文件的绝对路径<p>      * <p>@param fileName 输出文件名<p>      * <p>@param suffix 文件后缀名<p>      * <p>@param dr 输出配置信息<p>      * @throws JRException      * @throws IOException      */     public static void worldExport(HttpServletResponse response, Map<String, Object> params, String filePath, String fileName,              ReportFileType suffix, DocxReportConfiguration dr) throws JRException, IOException{         JasperPrint jasperPrint;         try {             File jasperFile = new File(filePath);             JasperReport jasperReport = (JasperReport) JRLoader.loadObject(jasperFile);             jasperPrint = JasperFillManager.fillReport(jasperReport, params,                      UtilPersistence.getConnection());             response.setCharacterEncoding("utf-8");             fileName = fileName + "." + suffix.toString();             response.setHeader("Content-Disposition","attachment;" + "filename=" +              new String(fileName.getBytes(), "ISO-8859-1"));             response.addHeader("Content-Type", "application/x-msword");             JRDocxExporter worldExporter = new JRDocxExporter();             worldExporter.setExporterInput(new SimpleExporterInput(jasperPrint));             worldExporter.setExporterOutput(new SimpleOutputStreamExporterOutput(response.getOutputStream()));             if(!UvUtil.isNull(dr)){                 worldExporter.setConfiguration(dr);             }             worldExporter.exportReport();         } catch (JRException e) {             throw e;         } catch (IOException e) {             throw e;         }     }          /**      * Excle导出方法      * <p>@param response <p>      * <p>@param params 报表需要的参数<p>      * <p>@param filePath 模板文件的绝对路径<p>      * <p>@param fileName 输出文件名<p>      * <p>@param suffix 文件后缀名<p>      * <p>@param xs 输出配置信息<p>      * @throws JRException      * @throws IOException      */     public static void excleExport(HttpServletResponse response, Map<String, Object> params, String filePath, String fileName,              ReportFileType suffix, XlsxReportConfiguration xs) throws JRException, IOException{         JasperPrint jasperPrint;         try {             File jasperFile = new File(filePath);             JasperReport jasperReport = (JasperReport) JRLoader.loadObject(jasperFile);             jasperPrint = JasperFillManager.fillReport(jasperReport, params,                      UtilPersistence.getConnection());             response.setCharacterEncoding("utf-8");             fileName = fileName + "." + suffix.toString();             response.setHeader("Content-Disposition","attachment;" + "filename=" +              new String(fileName.getBytes(), "ISO-8859-1"));             response.setContentType("application/vnd_ms-excel");             JRXlsxExporter xlsxExporter = new JRXlsxExporter();             xlsxExporter.setExporterInput(new SimpleExporterInput(jasperPrint));             xlsxExporter.setExporterOutput(new SimpleOutputStreamExporterOutput(response.getOutputStream()));             if(!UvUtil.isNull(xs)){                 xlsxExporter.setConfiguration(xs);             }             xlsxExporter.exportReport();         } catch (JRException e) {             throw e;         } catch (IOException e) {             throw e;         }     }          /**      * 以HTML渲染报表      * <p>@param response<p>       * <p>@param params 报表需要的参数<p>      * <p>@param filePath 文件的绝对路径<p>      * <p>@param exporterConfig 输出配置信息<p>      * @throws JRException       * @throws IOException       */     public static void reportShow(HttpServletResponse response, Map<String, Object> params, String filePath,              SimpleHtmlExporterConfiguration exporterConfig) throws JRException, IOException{         JasperPrint jasperPrint;         try {             // 设定reponse的输出格式             response.setCharacterEncoding("utf-8");             File jasperFile = new File(filePath);             // 创建JasperReport对象             JasperReport jasperReport = (JasperReport) JRLoader.loadObject(jasperFile);             // 填充JasperReport             jasperPrint = JasperFillManager.fillReport(jasperReport, params,                     UtilPersistence.getConnection());             HtmlExporter exporter = new HtmlExporter();             exporter.setExporterInput(new SimpleExporterInput(jasperPrint));             // 设定导出类型为response.getWriter()             exporter.setExporterOutput(new SimpleHtmlExporterOutput(response.getWriter()));             if(!UvUtil.isNull(exporterConfig)){                 exporter.setConfiguration(exporterConfig);             }             exporter.exportReport();         } catch (JRException e) {             LOG.error("渲染报表文件: " + filePath + "出现异常!");             throw e;         } catch (IOException e) {             LOG.error("渲染报表文件: " + filePath + "出现异常!");             throw e;         }              }          /**      * 以HTML渲染报表      * <p>@param response<p>       * <p>@param params 报表需要的参数<p>      * <p>@param filePath 文件的绝对路径<p>      */     public static void reportShow(HttpServletResponse response,             Map<String, Object> params, String filePath) throws JRException, IOException{         reportShow(response, params, filePath, null);     }          /**      * 报表打印      * <p>@param response<p>       * <p>@param params 报表需要的参数<p>      * <p>@param filePath 输入文件的绝对路径<p>      * <p>@param jr 输出配置信息<p>      * @throws JRException       * @throws IOException       */     public static void reportPrint(HttpServletResponse response, Map<String, Object> params,             String filePath, JasperReportsContext jr) throws JRException{         JasperPrint jasperPrint;         try {             File jasperFile = new File(filePath);             JasperReport jasperReport = (JasperReport) JRLoader.loadObject(jasperFile);             jasperPrint = JasperFillManager.fillReport(jasperReport, params,                      UtilPersistence.getConnection());             response.setCharacterEncoding("utf-8");             JasperReportsContext jasperReportsContext = null;             JasperPrintManager jasperPrintManager = null;             if(UvUtil.isNull(jr)){                 jasperReportsContext = new SimpleJasperReportsContext();                 jasperPrintManager = JasperPrintManager.getInstance(jasperReportsContext);             }else {                 jasperPrintManager = JasperPrintManager.getInstance(jr);             }             jasperPrintManager.print(jasperPrint, true);         } catch (JRException e) {             e.printStackTrace();         }     }          /**      * 报表打印      * <p>@param response<p>      * <p>@param params 报表需要的参数<p>      * <p>@param filePath 输入文件的绝对路径<p>      * <p>@param jr 输出配置信息<p>      * @throws JRException       * @throws IOException       */     public static void reportPrint(HttpServletResponse response,              Map<String, Object> params, String filePath) throws JRException{         try {             reportPrint(response, params, filePath, null);         } catch (JRException e) {             e.printStackTrace();         }     } }

    ———————————————— 版权声明:本文为博主「熊诗锌」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/agogwalker/article/details/70232348

    Processed: 0.018, SQL: 12