XLSTransformer 导出Excel数据[通俗易懂]

XLSTransformer 导出Excel数据[通俗易懂]先上代码:packagecn.export.util;importjava.io.FileInputStream;importjava.net.URLEncoder;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importjavax.servlet.ServletOutp

大家好,又见面了,我是你们的朋友全栈君。

先上代码

java code:

<pre name="code" class="java">package cn.export.util;
import java.io.FileInputStream;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.jxls.transformer.XLSTransformer;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
/**
 * 导出文件util
 * @author
 */
public class ExportUtil {
	@SuppressWarnings("unchecked")
	public static void exportData(HttpServletRequest req, HttpServletResponse resp, List results,String fileName, 
			String year,String quarter, String filePath) throws Exception{
		FileInputStream fis = null;
		ServletOutputStream os = null;
		XLSTransformer transformer = new XLSTransformer();
		Map params = new HashMap();
		params.put("year", year);
		params.put("quarter", quarter);
		params.put("results", results);
		
		fis = new FileInputStream(filePath);
		resp.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8") + ".xls");
		resp.setContentType("application/vnd.ms-excel;charset=gbk");
		resp.setHeader("Location", URLEncoder.encode(fileName,"UTF-8") + ".xls");
		
		HSSFWorkbook wb =  transformer.transformXLS(fis, params);
		os = resp.getOutputStream();
		wb.write(os);
		os.flush();
		os.close();
		fis.close();
	}
}

java code:

package cn.export.com;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.export.util.ExportUtil;
public class ExportServlet extends HttpServlet{
	
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		this.doPost(req, resp);
	}
	
	@SuppressWarnings("unchecked")
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp){
		try {
			String fileName = "服装销售统计";
			List results = new ArrayList();
			for(int i = 0; i < 3; i++){
				Map resMap = new HashMap();
				resMap.put("id", i);
				resMap.put("name", "女装"+i);
				resMap.put("area", "广州");
				resMap.put("traffic", "高铁");
				resMap.put("level", "A");
				resMap.put("time", "2014/09/19");
				resMap.put("operator", "张三");
				resMap.put("remark", "销售良好");
				results.add(i, resMap);
			}
			URL url = this.getClass().getClassLoader().getResource("");
			String filePath = url.getPath() + "doc/fz.xls";
			ExportUtil.exportData(req, resp, results, fileName, "2014", "2", filePath);
		} catch (Exception e) {
		}finally{
			try {
			} catch (Exception e) {
			}
		}
	}
}

所需jar包:

XLSTransformer 导出Excel数据[通俗易懂]

所需jar包下载: 点击这里  (该功能单独测试,没有和其他框架整合)

Excel表模板格式:

XLSTransformer 导出Excel数据[通俗易懂]

(注:excel获取数据的方式: ${results.get(“key”)} ,key为上面代码中map的key)


结果显示:

XLSTransformer 导出Excel数据[通俗易懂]

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/163870.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python-元组,字典,列表

    python-元组,字典,列表

    2021年5月17日
    111
  • java三目运算符判断三个值_双目运算符只有一个目

    java三目运算符判断三个值_双目运算符只有一个目使用三目运算符重构业务代码,测试的时候发生了NPE的问题。重构代码非常简单,代码如下://方法返回参数类型为Integer//privateIntegercode;SimpleObjsimpleObj=newSimpleObj();//其他业务逻辑if(simpleObj==null){return-1;}else{returnsimpleObj.getC…

    2025年7月21日
    1
  • 2022年化工自动化控制仪表考试模拟100题及答案详解_化工仪表及自动化答案

    2022年化工自动化控制仪表考试模拟100题及答案详解_化工仪表及自动化答案题库来源:安全生产模拟考试一点通公众号小程序2022化工自动化控制仪表上岗证题目系化工自动化控制仪表培训试题上机考试练习题!2022年化工自动化控制仪表考试模拟100题及答案根据化工自动化控制仪表考试大纲。化工自动化控制仪表判断题通过安全生产模拟考试一点通准确把握考试要点。1、【单选题】“硬水”是指水中所溶的()离子较多的水。(B)A、钙和钠B、钙和镁C、镁和铁2、【单选题】串级控制系统具有一定的自适应能力可用于负荷和操作条件有较大变化的场合,是由于增加了()。(B…

    2025年9月27日
    4
  • 为什么Redis选择6379作为默认端口号?[通俗易懂]

    为什么Redis选择6379作为默认端口号?[通俗易懂]6379在是手机按键上MERZ对应的号码,而MERZ取自意大利歌女AlessiaMerz的名字。MERZ长期以来被antirez及其朋友当作愚蠢的代名词。Redis作者antirez同学在twitter上说将在下一篇博文中向大家解释为什么他选择6379作为默认端口号。而现在这篇博文出炉,在解释了Redis的LRU机制之后,向大家解释了采用6379作为默认端口的原因。原博文:http://anti…

    2022年5月27日
    99
  • mac navicat prenium 15.0.29 激活码[免费获取]

    (mac navicat prenium 15.0.29 激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月21日
    90
  • 常用的jquery鼠标事件_html5回到顶部

    常用的jquery鼠标事件_html5回到顶部jQuery-doubleTap是一款非常有用的鼠标双击事件或移动设备的触摸双击事件检测jQuery插件。该插件通过对“click”和“touch”的简单代码优化来实现鼠标双击或触摸双击事件的检测。使用方法要检测双击事件需要在页面中引入jQuery和jquery-doubleTap.js文件。初始化插件jquery-doubleTap.js的实现代码非常简单:首先判断是鼠标点击事件还是触摸点击事件…

    2022年10月1日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号