• JasperReports实现报表调出excel


    一、利用工具iReport 创建task.jrxml 模板 并生成 task.jasper 文件

    二、搭建工程导入以下jar包

    commons-beanutils-1.9.2.jar

    commons-collections-3.2.1.jar

    commons-digester-2.1.jar

    commons-lang3-3.2.jar

    commons-logging-1.1.3.jar

    dom4j-1.6.1.jar

    groovy-all-2.0.1.jar

    itext-2.1.7.jar

    jasperreports-5.5.1.jar

    json-lib-2.3-jdk15.jar

    jxl-2.6.10.jar

    三、生成excel

    package com.weixingzh.servlet;
    
    import java.io.IOException;
    import java.net.URLEncoder;
    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import javax.servlet.ServletException;
    import javax.servlet.ServletOutputStream;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import net.sf.jasperreports.engine.JRAbstractExporter;
    import net.sf.jasperreports.engine.JRDataSource;
    import net.sf.jasperreports.engine.JRExporterParameter;
    import net.sf.jasperreports.engine.JasperFillManager;
    import net.sf.jasperreports.engine.JasperPrint;
    import net.sf.jasperreports.engine.JasperReport;
    import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
    import net.sf.jasperreports.engine.data.JRMapCollectionDataSource;
    import net.sf.jasperreports.engine.data.JsonDataSource;
    import net.sf.jasperreports.engine.export.JExcelApiExporter;
    import net.sf.jasperreports.engine.export.ooxml.JRXlsxExporter;
    import net.sf.jasperreports.engine.util.JRLoader;
    import net.sf.json.JSONObject;
    
    /**
     * Servlet implementation class JasperDemo
     */
    @WebServlet("/JasperDemo")
    public class JasperDemo extends HttpServlet {
    	private static final long serialVersionUID = 1L;
           
        /**
         * @see HttpServlet#HttpServlet()
         */
        public JasperDemo() {
            super();
            // TODO Auto-generated constructor stub
        }
    
    	/**
    	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
    	 */
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		doPost(request, response);
    	}
    
    	/**
    	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
    	 */
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		try {
    			/*	//list Bean对象传数据方式
    			 	List<EventVo> eventList = new ArrayList();
    				EventVo ev1 = new EventVo();
    				ev1.setGwId("tian");
    				ev1.setEventType("a123");
    				EventVo ev2 = new EventVo();
    				ev2.setGwId("tian2");
    				ev2.setEventType("a1232");
    				eventList.add(ev1);
    				eventList.add(ev2);
    				JRDataSource dataSource = new JRBeanCollectionDataSource(eventList, true);
    			 */
    			Map<String, Object> map = new HashMap<String, Object>();
    			map.put("projectName", "AAAAA");
    			map.put("moduleName", "BBBBB");
    			List<Map<String, ?>> list = new ArrayList<Map<String, ?>>();
    			list.add(map);
    			//map传数据方式,可以JRDataSource这个实现类理解可以传什么样的数据
    			JRDataSource dataSource = new JRMapCollectionDataSource(list);
    			//生成文件名称
    			String fileName = "moban";
    			//jasper模板路径
    			String path = "E:\iReport\Demo20170218\src\com\servlet\report.jasper";
    			//读取jasper模板
    			JasperReport jasperReport = (JasperReport) JRLoader.loadObject(path);
    			JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, new HashMap(),dataSource);
    			ServletOutputStream sos = response.getOutputStream();
    			response.setContentType("application/x-download");
    			response.setHeader("Content-Disposition", "attachment; filename=" + fileName + ".xlsx");
    			// 使用JRXlsxExporter导出器导出 其他导出器好像有很多都是JR开头可以引用看下如PDF导出器是JRPdfExproter
    			JRXlsxExporter exporter = new JRXlsxExporter();
    			exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);  
    		    exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, response.getOutputStream()); 
    			exporter.exportReport();
    			sos.flush();
    			sos.close();
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	
    	}
    
    }
    

      

  • 相关阅读:
    快慢指针
    成绩排序
    简单排序
    个人作业——软件工程实践总结作业
    团队作业——项目验收与总结博客(麻瓜制造者)
    Beta阶段总结博客(麻瓜制造者)
    “福大易宝”宣传文案
    Beta冲刺(5/5)(麻瓜制造者)
    Beta冲刺(4/5)(麻瓜制造者)
    个人作业——软件工程实践总结作业(待续)
  • 原文地址:https://www.cnblogs.com/tianzhongshan/p/7027993.html
Copyright © 2020-2023  润新知