导出Excel

Action层---->Service层

package com.baizhi.controller;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.*;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.subject.Subject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import com.baizhi.service.UserService;
import com.baizhi.util.ExportExcelForUser;
import com.baizhi.util.ParseExcelForUser;
import com.baizhi.entity.User;

@Controller
@RequestMapping("/user")
public class UserController {
	@RequestMapping("/exportMessage")//之后异步请求传递数组:加上此属性: traditional:true  防止参数深度序列化的  ids=1  ids=2
	
	public @ResponseBody Map<String,Object> exportMessage(int[] ids,HttpServletRequest req,HttpServletResponse res){
		System.out.println("^^^^^^^^^^^^"+ids.length);
		for(int id:ids){
			System.out.println("&&&&&&&&&&&&&&&&&&&&&&&"+id);
		}
		System.out.println();
		Map<String,Object> map = new HashMap<String,Object>();
		try {
			//文件名称    处理
			Date date = new Date();
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");
			String time = sdf.format(date);
			// 不允许出现特殊字符
			String fileName = "用户"+ time + ".xls";

			//用户   查询
			List<User> users = userService.selectuserByIds(ids);

			// 第一步,创建一个webbook,对应一个Excel文件 核心处理对象
			HSSFWorkbook wb = new HSSFWorkbook();
			// 为当前工作簿 创建名字
			String sheetName = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss").format(new Date());
						
			// 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet 并设置工作簿名字
			HSSFSheet sheet = wb.createSheet(sheetName);

			// 通过工具类创建表格 以及设值
			ExportExcelForUser.createExcelOfUser(users, sheet);  
			
			ExportExcelForUser.setAttachmentFileName(req, res, fileName);
			// 从响应获取输出流  将数据写出去
			OutputStream out = res.getOutputStream();
			wb.write(out);
			// 保证数据的完整性   100k    80k
			out.flush();
			out.close();
			map.put("message", true);
		} catch (Exception e) {
			e.printStackTrace();
			map.put("message", false);
		}
		return map;
	}
}

ExportExcelForUser 工具类

package com.baizhi.util;

import java.io.UnsupportedEncodingException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;

import com.baizhi.entity.User;


public class ExportExcelForUser {
	/**
	 * 备份用户的excel数据文件方法。
	 * 
	 * @param
	 *            //根据要清理的条件获得的用户数据信息。
	 * @param
	 * 
	 *       
	 */
	public static void createExcelOfUser(List<User> users,
			HSSFSheet sheetForAuth) {
		// 第三步,在sheet中添加表头第0行  0  代表第一行
		HSSFRow rowHead = sheetForAuth.createRow(0);
		// 第四步,创建单元格,并设置值表头 
		rowHead.createCell(0).setCellValue("法名");
		rowHead.createCell(1).setCellValue("昵称");
		rowHead.createCell(2).setCellValue("性别");
		rowHead.createCell(3).setCellValue("用户头像");
		rowHead.createCell(4).setCellValue("用户上师");
		rowHead.createCell(5).setCellValue("所在省");
		rowHead.createCell(6).setCellValue("所在市");
		rowHead.createCell(7).setCellValue("用户电话");
		rowHead.createCell(8).setCellValue("用户密码");
		
		User al = new User();

        // 第五步,写入实体数据 实际应用中这些数据从数据库得到,
		if (users != null) {
			//    8      从集合的最高下标 递减 添加数据
			for (int i = users.size() - 1; i >= 0; i--) {
				al = users.get(i);
				String farmington = al.getNickname();
				String nickName = al.getName();
				String gener = al.getSex();
				String photo = al.getUserImage();
				String user_sheng = al.getUserSheng();
				String user_shi = al.getUserShi();
				String telphone = al.getTelphone();
				String password = al.getPassword();

				// 创建行
				HSSFRow row = sheetForAuth.createRow(i + 1);

				row.createCell(0).setCellValue(farmington);
				row.createCell(1).setCellValue(nickName);
				row.createCell(2).setCellValue(gener);
				row.createCell(3).setCellValue(photo);
				row.createCell(5).setCellValue(user_sheng);
				row.createCell(6).setCellValue(user_shi);
				row.createCell(7).setCellValue(telphone);
				row.createCell(8).setCellValue(password);
			}
		}

	}
	/**
	 * 设置下载文件编码/响应格式
	 * 
	 * @param request
	 * @param response
	 * @param fileName
	 * @throws UnsupportedEncodingException
	 */
	public final static void setAttachmentFileName(HttpServletRequest request,
			HttpServletResponse response, String fileName)
			throws UnsupportedEncodingException {

		response.setCharacterEncoding("UTF-8");
		// 下载响应格式
		response.setContentType("application/octet-stream;charset=UTF-8");
		// 防止中文乱码,设置文本的编码格式
		fileName = new String(fileName.getBytes("GBK"), "ISO-8859-1");
		response.setHeader("Content-Disposition", "attachment; filename="+ fileName);
	}
}

上一篇:导出Excel
下一篇:导入(用户)的工具类

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值