poi实现超简单的通用excel导出

在java开发中我们经常会涉及到导出excel的操作,但是太多这样的操作的话我们一个一个的写就太麻烦,代码冗余多到不行,我们可以利用poi来写一些工具类实现公用的excel导出,我们使用java反射可以实现实体和excel列对应的导出,但是有时候我们不需要那么多的字段,所以有了以下工具类:

同样是居于poi,源码简单明了,实现也简单:

这个工具类的优势:

操作简单,代码量少,参数少

实现动态数据的导出(可以带参数到数据库查询出一个list,把list中的实体数据导出)

不会保存文件到服务器(减少垃圾文件的产生,减轻服务器的压力),直接下载到客户端(访问页面的电脑)


我把包传到了资源文件中点击下面的链接去下载

前提:下载写好的工具类

下载地址:点击打开链接


如果没有poi包可以自行下载

下载地址:点击打开链接    这个包里面我们只需要导入一个poi.jar包到你项目的lib下就可以了,其他的都不需要


下面我们就开始操作了


1.将util中的java文件放到你自己的项目包中


2.下面开始编写导出exce的方法,这个方法是一个conntroller中的方法,我们可以在上面加上requestMapping来实现页面调用,其实就是下载

	@ResponseBody
	@RequestMapping(value="cpkValFromParam.action")
	public void cpkValFromParam(CpkVal cpkval,HttpServletRequest request,HttpServletResponse response){
		String fileName = "标题";//文件标题
		List<CpkVal> cpkvalList = outPutForExcelService.listCpkValForExcell(cpkval);//定义一个map集合 由于存取excel表格需要展示的数据信息
		LinkedHashMap<String, List<?>> map = new LinkedHashMap<String, List<?>>();
		map.put(fileName, cpkvalList);//将文件标题和数据放到
		mapList<String[]> fieldNames = new ArrayList<String[]>(); 
		fieldNames.add(new String[] { "createTime","xxx"});//要导出的实体中的字段名称,必须和实体中的属性对应 
		//打印的excel表格 列名
		Map<String, String[]> moreColumns = new LinkedHashMap<String, String[]>(); 
		moreColumns.put("编号", new String[]{"编号"}); 
		moreColumns.put("时间", new String[]{"时间"}); 
		moreColumns.put("excel中的列名", new String[]{"excel中的列名"}); //开始调用工具类中的方法 
		ExcelExportData setInfo = new ExcelExportData(); setInfo.setDataMap(map);//设置数据 
		setInfo.setFieldNames(fieldNames);//设置列明 
		setInfo.setTitles(new String[] {fileName}); //excel表格头部加入查询数据的日期起始值 
		setInfo.setExportExcelDate("2017-10-10");//设置导出日期,显示在文件标题的下方,可以不要 
		setInfo.setMoreColumns(moreColumns); //导出
		FileDownloadUtils.exportFile(request,response, setInfo, fileName);}
	}

3.我们在页面上调用这个requestMapping里面的链接,也可以直接用a标签

<a href="/地址前缀/cpkValFromParam.action">导出excel</a>

ok,完成了

我们在页面上点击这个导出excel的时候,进入后台查询数据,把list中的数据写入excel并下载




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值