我们在开发中可能会遇到将数据库中的数据都取出来存储到excel中去
在操作过程中用到了poi-3.17.jar包
/**
* 构建Excel
* map参数 用来保存数据 保存的是从Handler传递过来的数据
* workBook 操作Excel 需要导入poi jar包
*
*/
@Override
protected void buildExcelDocument(Map<String, Object> map,
HSSFWorkbook workBook, HttpServletRequest request,
HttpServletResponse response)
throws Exception {
//excel文件名
String fileName = "学生excel.xls";
//设置响应的编码格式
response.setCharacterEncoding("UTF-8");
//设置响应类型
response.setContentType("application/ms-excel");
//设置响应头
response.setHeader("Content-Disposition",
"inline;filename="+
new String(fileName.getBytes(),"iso8859-1"));
//构建excel
//map集合中 保存了所有学生的list集合,key stuList
List<StuModel> list = (List<StuModel>)map.get("stuList");
//创建一个sheet标签
HSSFSheet sheet = workBook.createSheet("学生列表");
//创建第一行(头)
HSSFRow head = sheet.createRow(0);
//创建列
head.createCell(0).setCellValue("学生姓名");
head.createCell(1).setCellValue("年龄");
head.createCell(2).setCellValue("性别");
head.createCell(3).setCellValue("地址");
//根据具体数据集合创建其他的行和列
for(int i=1;i<=list.size();i++){
HSSFRow dataRow = sheet.createRow(i);
//循环时将实体类获取到,调用对应的get方法 对列进行设置值
StuModel stuModel = list.get(i-1);
dataRow.createCell(0).setCellValue(stuModel.getStuName());
dataRow.createCell(1).setCellValue(stuModel.getAge());
dataRow.createCell(2).setCellValue(stuModel.getSex());
dataRow.createCell(3).setCellValue(stuModel.getAddress());
}
//通过repsonse获取输出流
OutputStream outputStream = response.getOutputStream();
workBook.write(outputStream);
outputStream.flush();
outputStream.close();
}