ssh结合easyui实现导出Excel功能

jsp界面代码:
	         {text:'导出',iconCls:'icon-undo',handler:function(){
				$("#frm1").attr("src", "${pageContext.request.contextPath}/subarea/exImport");
	       	 }},

控制器代码(全部都赋值粘贴,需要操作的只有,查询方法,创建对象,创建标题,循环的地方):

	@Action(value="exImport")
	public void exportExcel() throws Exception {
		//第一步查询所有的分区数据
		List<BcSubarea> list = subareaService.findAll();//-----//我这个是导出数据库中所有的数据,也可以只导入选中的数据,需要自己写方法
		//第二步:使用poi将数据写到excel文件中
		//在内存中创建一个excel文件
		HSSFWorkbook workbook =new HSSFWorkbook();
		//创建一个 标签页
		HSSFSheet sheet=workbook.createSheet("分区数据");
		//创建标题行
		HSSFRow headrow=sheet.createRow(0);			//表示在第一行为标题行
		headrow.createCell(0).setCellValue("分区编号");        //-------
		headrow.createCell(1).setCellValue("开始编号");
		headrow.createCell(2).setCellValue("结束编号");
		headrow.createCell(3).setCellValue("位置信息");
		headrow.createCell(4).setCellValue("省市区");
		headrow.createCell(5).setCellValue("关键信息");
		for(BcSubarea b:list) {
			HSSFRow dataRow=sheet.createRow(sheet.getLastRowNum()+1);
			dataRow.createCell(0).setCellValue(b.getSubareaId());
			dataRow.createCell(1).setCellValue(b.getStartnum());
			dataRow.createCell(2).setCellValue(b.getEndnum());
			dataRow.createCell(3).setCellValue(b.getPosition());
			dataRow.createCell(4).setCellValue(b.getBcRegion().getName());
			dataRow.createCell(5).setCellValue(b.getAddresskey());
		}
		//第三步:使用输出流进行文件下载(一个流,两个头)
		String filename="分区数据.xls";
		String contentType=getSession().getServletContext().getMimeType(filename);
		ServletOutputStream out=getResponse().getOutputStream();
		getResponse().setContentType(contentType);
		//获取客户端浏览器类型
		filename=encodeChineseDownloadFileName(getRequest(), filename);	//(这个方法为自己写的方法,具体看下面一段)
		getResponse().setHeader("content-disposition", "attachment;filename="+filename);
		workbook.write(out);
		out.close();
	}

encodeChineseDownloadFileName(getRequest(), filename);方法代码(这个复制粘贴就行了,我这个是写在baseAction中的,别的action都继承了这个action):

	//浏览器兼容
	public String encodeChineseDownloadFileName(HttpServletRequest request,String pFileName) throws Exception {
		String fileName=null;
		String agent=request.getHeader("USER-AGENT");
		if(null!=agent) {
			if(-1!=agent.indexOf("Firefox")) {
				fileName="=?UTF-8?B?"+(new String(org.apache.commons.codec.binary.Base64.encodeBase64(pFileName.getBytes("UTF-8"))))+"?=";
			}else if(-1!=agent.indexOf("Chrome")) {
				fileName=new String(pFileName.getBytes(),"ISO8859-1");
			}else {//IE7+
				fileName=java.net.URLEncoder.encode(pFileName,"UTF-8");
				fileName=fileName.replace("+", "%20");
			}
		}else {
			fileName=pFileName;
		}
		return fileName;		
	}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值