JasperUtil
2020-01-15 09:17
2011 查看
package com.ynashk.shg.util; import net.sf.jasperreports.engine.JRException; import net.sf.jasperreports.engine.JasperFillManager; import net.sf.jasperreports.engine.JasperPrint; import net.sf.jasperreports.engine.JasperReport; 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.*; import org.springframework.core.io.ClassPathResource; import javax.servlet.http.HttpServletResponse; import java.io.*; import java.net.URLEncoder; import java.sql.Connection; import java.sql.SQLException; import java.text.ParseException; import java.util.HashMap; import java.util.Map; public class JasperUtil { private final static String jplocal = "/jasper/"; public static void exportPdf( String reportName, Map<String, Object> parameters, HttpServletResponse response, Connection connection) throws SQLException, JRException, IOException, ParseException { //获取文件流 ClassPathResource resource = new ClassPathResource( jplocal+reportName + ".jasper"); InputStream jasperStream = resource.getInputStream(); JasperReport jasperReport = (JasperReport) JRLoader.loadObject(jasperStream); JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters,connection); JRPdfExporter exporter = new JRPdfExporter (); //设置输入项 ExporterInput exporterInput = new SimpleExporterInput(jasperPrint); exporter.setExporterInput(exporterInput); //设置输出项 OutputStreamExporterOutput exporterOutput = new SimpleOutputStreamExporterOutput(response.getOutputStream()); exporter.setExporterOutput(exporterOutput); response.setContentType("application/pdf"); response.setHeader("Content-Disposition", "attachment; filename="+ URLEncoder.encode(reportName + ".pdf","utf8")); exporter.exportReport(); connection.close(); } public static void exportExcel( String reportName, String fileName, Map<String, Object> parameters, HttpServletResponse response, Connection connection) throws SQLException, JRException, IOException, ParseException { parameters = parameters == null ? new HashMap<>() : parameters; //获取文件流 ClassPathResource resource = new ClassPathResource( jplocal+reportName + ".jasper"); InputStream jasperStream = resource.getInputStream(); JasperReport jasperReport = (JasperReport) JRLoader.loadObject(jasperStream); JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters,connection); //获取文件流 //File exe_rpt = new File("C:\\jasper\\"+reportName+".jasper"); JRXlsxExporter exporter = new JRXlsxExporter(); //设置输入项 ExporterInput exporterInput = new SimpleExporterInput(jasperPrint); exporter.setExporterInput(exporterInput); //设置输出项 OutputStreamExporterOutput exporterOutput = new SimpleOutputStreamExporterOutput(response.getOutputStream()); exporter.setExporterOutput(exporterOutput); String newFileName = fileName+".xlsx"; //设置响应方式 newFileName= URLEncoder.encode(newFileName,"UTF-8"); newFileName=newFileName.replaceAll("\\+","%20"); response.setContentType("application/vnd.ms-excel"); response.addHeader("Content-Disposition", "attachment;filename*=UTF-8''" + newFileName); exporter.exportReport(); connection.close(); } public static void exportExcel2( String reportName, String fileName, Map<String, Object> parameters, HttpServletResponse response, Connection connection) throws SQLException, JRException, IOException, ParseException { parameters = parameters == null ? new HashMap<>() : parameters; //获取文件流 File exe_rpt = new File("f:\\jasper\\"+reportName+".jasper"); JasperPrint jasperPrint = JasperFillManager.fillReport(exe_rpt.getPath(), parameters,connection); //获取文件流 //File exe_rpt = new File("C:\\jasper\\"+reportName+".jasper"); JRXlsxExporter exporter = new JRXlsxExporter(); //设置输入项 ExporterInput exporterInput = new SimpleExporterInput(jasperPrint); exporter.setExporterInput(exporterInput); //设置输出项 OutputStreamExporterOutput exporterOutput = new SimpleOutputStreamExporterOutput(response.getOutputStream()); exporter.setExporterOutput(exporterOutput); String newFileName = fileName+".xlsx"; //设置响应方式 newFileName= URLEncoder.encode(newFileName,"UTF-8"); newFileName=newFileName.replaceAll("\\+","%20"); response.setContentType("application/vnd.ms-excel"); response.addHeader("Content-Disposition", "attachment;filename*=UTF-8''" + newFileName); exporter.exportReport(); connection.close(); } public static void exportWord( String reportName, Map<String, Object> parameters, HttpServletResponse response, Connection connection) throws SQLException, JRException, IOException { parameters = parameters == null ? new HashMap<>() : parameters; //获取文件流 ClassPathResource resource = new ClassPathResource( jplocal+reportName + ".jasper"); InputStream jasperStream = resource.getInputStream(); JasperReport jasperReport = (JasperReport) JRLoader.loadObject(jasperStream); JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, connection); JRDocxExporter exporter = new JRDocxExporter (); //设置输入项 ExporterInput exporterInput = new SimpleExporterInput(jasperPrint); exporter.setExporterInput(exporterInput); //设置输出项 OutputStreamExporterOutput exporterOutput = new SimpleOutputStreamExporterOutput(response.getOutputStream()); exporter.setExporterOutput(exporterOutput); response.setContentType("application/msword"); response.setHeader("Content-disposition", "attachment; filename="+ URLEncoder.encode(reportName + ".doc","utf8")); exporter.exportReport(); connection.close(); } public static void exportHtml( String reportName, Map<String, Object> parameters, HttpServletResponse response, Connection connection) throws SQLException, JRException, IOException { InputStream jasperStream = null; try{ parameters = parameters == null ? new HashMap<>() : parameters; //获取文件流 ClassPathResource resource = new ClassPathResource(jplocal+ reportName + ".jasper"); jasperStream = resource.getInputStream(); JasperReport jasperReport = (JasperReport) JRLoader.loadObject(jasperStream); JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, connection); //设置输入项 HtmlExporter exporter = new HtmlExporter(); SimpleHtmlExporterConfiguration config=new SimpleHtmlExporterConfiguration(); String header= "<html>\n"+ "<head>\n"+ " <title></title>\n"+ " <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n"+ " <link rel=\"stylesheet\" type=\"text/css\" href=\"css/jasper.css\" />\n"+ " <style type=\"text/css\">\n"+ " a {text-decoration: none}\n"+ " </style>\n"+ "</head>\n"; config.setHtmlHeader(header); exporter.setConfiguration(config); ExporterInput exporterInput = new SimpleExporterInput(jasperPrint); exporter.setExporterInput(exporterInput); //设置输出项 SimpleHtmlExporterOutput exporterOutput = new SimpleHtmlExporterOutput(response.getOutputStream()); exporter.setExporterOutput(exporterOutput); response.setContentType("text/html"); response.setHeader("Content-disposition", "attachment; filename="+ URLEncoder.encode(reportName + ".html","utf8")); exporter.exportReport(); }catch (Exception e){ e.printStackTrace(); }finally { jasperStream.close(); connection.close(); } } public static String exportExcelToFile( String reportName, String excelName, Map<String, Object> parameters, HttpServletResponse response, Connection connection) throws SQLException, JRException, IOException, ParseException { parameters = parameters == null ? new HashMap<>() : parameters; //FileOutputStream outputStream=null; ByteArrayOutputStream outPut=new ByteArrayOutputStream(); try{ String Path = Constants.getApplicationValue("applicationContext","save.Report.path"); File file = new File(Path); if(!file.exists()){ file.mkdirs(); } //获取文件流 ClassPathResource resource = new ClassPathResource( jplocal+reportName + ".jasper"); InputStream jasperStream = resource.getInputStream(); JasperReport jasperReport = (JasperReport) JRLoader.loadObject(jasperStream); // File exe_rpt = new File("C:\\jasper\\"+reportName+".jasper"); File excelFile = new File(Path, excelName+ ".xlsx");//要导出的Excel文件 for (int i = 2; excelFile.exists() && i < Integer.MAX_VALUE; i++){ excelFile = new File(Path,excelName + "-"+i+".xlsx"); } JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters,connection); //导出Excel JRXlsxExporter exporter = new JRXlsxExporter(); exporter.setExporterInput(new SimpleExporterInput(jasperPrint)); exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(excelFile)); exporter.exportReport(); return excelFile.getName(); }catch (Exception e){ e.printStackTrace(); }finally { outPut.close(); connection.close(); } return null; } public static String exportExcelToFile2( String reportName, String excelName, Map<String, Object> parameters, HttpServletResponse response, Connection connection) throws SQLException, JRException, IOException, ParseException { parameters = parameters == null ? new HashMap<>() : parameters; FileOutputStream outputStream=null; ByteArrayOutputStream outPut=new ByteArrayOutputStream(); try{ String Path = Constants.getApplicationValue("applicationContext","save.Report.path"); File file = new File(Path); if(!file.exists()){ file.mkdirs(); } //获取文件流 /*ClassPathResource resource = new ClassPathResource( jplocal+reportName + ".jasper"); InputStream jasperStream = resource.getInputStream(); JasperReport jasperReport = (JasperReport) JRLoader.loadObject(jasperStream);*/ File exe_rpt = new File("f:\\jasper\\"+reportName+".jasper"); File excelFile = new File(Path, excelName+ ".xlsx");//要导出的Excel文件 for (int i = 2; excelFile.exists() && i < Integer.MAX_VALUE; i++){ excelFile = new File(Path,excelName + "-"+i+".xlsx"); } JasperPrint jasperPrint = JasperFillManager.fillReport(exe_rpt.getPath(), parameters,connection); //导出Excel JRXlsxExporter exporter = new JRXlsxExporter(); exporter.setExporterInput(new SimpleExporterInput(jasperPrint)); exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(excelFile)); exporter.exportReport(); return excelFile.getName(); }catch (Exception e){ e.printStackTrace(); }finally { outPut.close(); connection.close(); } return null; } }
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 在ASP.Net中两种利用CSS实现多界面
- asp.net core 2.0 bundleconfig.json
- ASP.NET Core 2 生命周期
- 【新手入门】树莓派Raspberry Pi3B+学习笔记1 开箱+系统安装
- 【新手入门】树莓派Raspberry 学习笔记2 散热片&散热风扇&外壳安装
- 【新手入门】树莓派Raspberry学习笔记4 摄像头安装+配置+简单使用
- 【新手入门】树莓派Raspberry学习笔记5 控制板载LED灯
- 【新手入门】树莓派Raspberry学习笔记8 开机就给你小心心!♥ python开机自动运行脚本
- 0011 python django 01 树莓派 Raspberry Pi 3B+ virtualenv 树莓派 Raspberry Pi 3B+ 安装 virtualenv 配置 路径 常用命令
- Aspera安装及文件上传详细教程
- 关于爬取aspx页面时的form data表单数据
- ASP.NET DataList中 查找 中的控件
- ASP.NET MVC 后台中 设置 js提示
- ASP.NETMVC 分页功能
- Asp.net MVC 模型验证如何做到模型字段与action 动作的解耦
- 一种仿照Asp.net Mvc思维构建WebSocket服务器的方法
- WebApiClient与Asp.net core DI的结合
- asp.net mvc 3 [USE IT!]
- 从零开始学习ASP.NET MVC 1.0 (一) 开天辟地入门篇
- 从零开始学习 ASP.NET MVC 1.0 (二) 识别URL的Routing组件