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
下一篇:导入(用户)的工具类