java实现excel导出实例

声明下:list是前面操作查询的结果集。

String path = request.getSession().getServletContext().getRealPath("/");
		String name = "测试_" + Tools.getDateStr(new Date(), "YYYYMMddHHmmss") + ".xls";

		XLSTransformer transformer = new XLSTransformer();
		String sfrom = path + "/xlstemplet/" +(1 == salvationType?"名字1-":"名字2-")+ "测试.xls";// 模板文件
		Workbook workbook;

		int pageSize = (!Tools.isEmpty(request.getParameter("pageSize"))) ? Integer.parseInt(request.getParameter("pageSize"))
				: 100;// 每个sheet的记录数量
		try {
			if ("mutiSheet".equals(request.getParameter("mutiSheet"))&& list.size() / pageSize > 1) {

				List sheetObjects = new ArrayList(); // 每一个sheet对应的list
				List sheetNames = new ArrayList(); // 每一个sheet名

				if (list != null) {
					for (int i = 0; i < list.size() / pageSize; i++) {
						Map subMap = new HashMap();
						subMap.put("pageSize", pageSize);
						subMap.put("currentPage", (i+1));
						int k = ((i + 1) * pageSize < list.size()) ? (i + 1) * pageSize : list.size();
						List resultList = list.subList(i * pageSize, k);
						subMap.put("resultList", resultList);
						sheetObjects.add(subMap);
						sheetNames.add("page" + (i + 1));
					}
				}
				workbook = transformer.transformMultipleSheetsList(new FileInputStream(sfrom), sheetObjects, sheetNames, "map",
						new HashMap(), 0);
			} else {
				Map beanMap = new HashMap();
				map.put("pageSize", 0);
				map.put("currentPage",0);
				beanMap.put("map", map);
				workbook = transformer.transformXLS(new FileInputStream(sfrom), beanMap);
			}
			response.reset();
			response.setHeader("Content-disposition", "attachment;success=true;filename =" + URLEncoder.encode(name, "utf-8"));
			OutputStream fos = null;
			fos = response.getOutputStream();
			workbook.write(fos);
			fos.flush();
			fos.close();
		} catch (ParsePropertyException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

 另外需要引入3个jar包:这蛋疼的博客不能传附件。。。

3个jar文件的下载地址:http://download.csdn.net/detail/sky_xin/8444825

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值