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();
		}
	
	}

}

  

原文地址:https://www.cnblogs.com/tianzhongshan/p/7027993.html