基于java实现下载excel

excel生成并下载

注意事项

ajax请求的数据类型不能以二进制流形式返回,所以建议以

  1. 表单形式提交,附带参数可以以隐藏域传值或者url后拼接。
  2. 使用window.location.href。
  3. 在前端拿到二进制流在处理等等。

前台代码

  • html 代码
					<!-- 前端form表单代码 -->
 		<form id="userExport" action='sysUserController!exportExcel.m'
				method="post">
				<input type="hidden" id="ids" name="ids" >
		</form>	
  • js代码

		/**
		*提交之前逻辑代码
		*
		*/
 		var data ={
   
			ids:selRow
		 };
		var data = JSON.stringify(selRow);
		
		 1. 表单提交
		 $('#ids').val(data);
		 $("#userExport").submit()

		 2. 使用window.location.href
		window.location.href = "sysUserController!exportExcel.m?ids="+data;
  • controller

	/**
	*这里根据自己实际需求去写
	* 这里都是一些封装的方法
	* controller 该加什么注解就加
	*/
	public void exportExcel(){
   
		//通过ids获取一个json数组
  		String jsonIds = this.pageData.getParams().get("ids");
  		//把json数据转数组
  		String[] ids = (String[]) JSONUtil.readJSON2Array(jsonIds, String.class);
  		//生成excel
  		this.sysUserService.receive(ids);
  		//this.sysUserService.receive(ids,this.returnData);
  	}
  • service

	/**
	* 这里是 service 
	* 1、首先得到你要生成的数据
	* 2、创建一个excel文件
	* 3、创建一个sheet
	* 4、设置sheet样式
	* 5、设置内容
	* 6、输出
	*/

	public void receive(String[] ids,IReturnData returnData) {
   
		//通过id查询得到实体集合
		List<User> list =  ArrayIdToList(ids);
		//excel导出
		export(list,returnData);
	}

	/**
	*生成excel并输出
	*
	*/
	private void export(List<User> list,IReturnData returnData) {
   

		HttpServletResponse response = ServletActionContext.getResponse();
  		//创建一个excel文件
  		HSSFWorkbook wb = new HSSFWorkbook();   
  		 //创建一个sheet
        HSSFSheet sheet = wb.createSheet("用户权限");
        
        //生成一个用户权限sheet
        getUserRoleInfo(wb,sheet,list);
        
        //循环遍历生成菜单权限sheet
        for (int i = 0;i < list.size(); i++) {
   
    
			List<Role> roles = getRoleByUser(list.get(i));
			for (Role role : roles) {
   
				String roleName = role.getName();
				//创建sheet
				HSSFSheet createSheet = wb.createSheet(list.get(i).getLoginName()+roleName+"菜单权限");
				//生成sheet
				getMenuInfo(wb,createSheet,role);
			}
		}    
        //输出
        toPrint(wb,response);
    
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值