1. 导入依赖:
<!-- POI相关依赖 -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
2. 实体类
package com.ssm.bean;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
public class Users {
private Long uid;
private String uno;
private String uname;
private String password;
private String sex;
private Integer age;
@DateTimeFormat(pattern="yyyy-MM-dd")
private Date birthday;
private String phone;
private String address;
private Long type;
private String uhead;
public Users() {
}
//实现Constructor、getter、setter、toString()
}
3. 业务层使用POI组件导出
//导出,不需要返回值,用ajax会出现问题,ids为前端传过来需要导出数据对于的id集合
@RequestMapping("/export/{ids}")
public void export(@PathVariable("ids") Integer[] ids,HttpServletRequest request , HttpServletResponse response){
System.out.println("导出操作!");
System.out.println(Arrays.toString(ids));
//根据id查询到数据
List<Users> users = userService.getBatchUserById(ids);
for (Users user : users) {
System.out.println(user);
}
//1.创建一个工作簿
HSSFWorkbook workbook = new HSSFWorkbook();
//2.为这个工作簿创建一个sheet
HSSFSheet sheet = workbook.createSheet("用户信息表");
//创建表头
HSSFRow titlerow = sheet.createRow(0);
HSSFCell titlecell1 = titlerow.createCell(0);
titlecell1.setCellValue("序号");
HSSFCell titlecell2 = titlerow.createCell(1);
titlecell2.setCellValue("编号");
HSSFCell titlecell3 = titlerow.createCell(2);
titlecell3.setCellValue("姓名");
sheet.getHeader();
for (int i = 0; i < users.size(); i++) {
//从list中获取一个对象
Users user = users.get(i);
//创建一行
HSSFRow row = sheet.createRow(i + 1);
//以下分别为每一行设置多个单元格,并为单元格设置值
HSSFCell idCell = row.createCell(0);
idCell.setCellValue(user.getUid());
HSSFCell unoCell = row.createCell(1);
unoCell.setCellValue(user.getUno());
HSSFCell unameCell = row.createCell(2);
unameCell.setCellValue(user.getUname());
}
String fileName="用户信息表_"+new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date())+".xls";
// //向本地存储!
// try {
// OutputStream os = new FileOutputStream(new File("D:\\" + fileName));
// workbook.write(os);
// } catch (FileNotFoundException e) {
// e.printStackTrace();
// } catch (IOException e) {
// e.printStackTrace();
// }
//生成Excel并提供下载
try {
ServletOutputStream outputStream = response.getOutputStream();//浏览器输出字节流
workbook.write(outputStream);
String userAgent=request.getHeader("User-Agent");
if(userAgent.contains("Safari")){
response.addHeader("Content-Disposition", "attachment;filename="+ URLEncoder.encode(fileName, "UTF-8")) ;
}else{
//设置请求头以附件的形式打开
response.addHeader("Content-Disposition", "attachment;filename="+new String(fileName.getBytes("utf-8"),"ISO-8859-1")) ;
}
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
4. 效果图