一、利用工具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(); } } }