// 省略各种导包......
/**
* 原先继承的是AbstractExcelView,但是已经过时了,打开源码,推荐使用
* AbstractXlsView / AbstractXlsxView / AbstractXlsxStreamingView
*
*/
public class ExportExcelViewResolver extends AbstractXlsView {
@Override
protected void buildExcelDocument(Map<String, Object> model, Workbook workbook, HttpServletRequest request,
HttpServletResponse response) throws Exception {
String fileName = "下载列表.xls";
response.setCharacterEncoding("UTF-8");
response.setContentType("application/ms-excel");// 文件下载
response.setHeader("Content-Disposition", "inline; filename=" + new String(fileName.getBytes(), "iso8859-1"));
OutputStream outputStream = response.getOutputStream();
HSSFWorkbook book = (HSSFWorkbook) workbook;
HSSFSheet sheet = book.createSheet();
HSSFRow row = sheet.createRow(0);
String[] headers = new String[] { "编号", "姓名", "年龄" };
for (int i = 0; i < headers.length; i++) {
row.createCell(i).setCellValue(headers[i]);
}
List<Student> stuList = (List<Student>) model.get("stuList");
for (int i = 0; i < stuList.size(); i++) {
Student stu = stuList.get(i);
row = sheet.createRow(i + 1);
row.createCell(0).setCellValue(i + 1);
row.createCell(1).setCellValue(stu.getName());
row.createCell(2).setCellValue(stu.getAge());
}
book.write(outputStream);
outputStream.flush();
outputStream.close();
}
}
controller
@Controller
@RequestMapping("/system")
public class ExportExcelViewController {
@RequestMapping("/excel.do")
public String Excel(ModelMap map){
List<Student> stuList = new ArrayList<>();
Student stu = new Student();
stu.setName("zs1");
stu.setAge(27);
stuList.add(stu);
stu = new Student();
stu.setName("zs2");
stu.setAge(28);
stuList.add(stu);
stu = new Student();
stu.setName("zs3");
stu.setAge(29);
stuList.add(stu);
map.put("stuList", stuList);
return "exportExcel";
}
}
springmvc-config.xml
<!-- 注册excel视图解析器 -->
<bean class="org.springframework.web.servlet.view.BeanNameViewResolver" />
<bean id="exportExcel" class="com.abc.crm.commons.web.filter.ExportExcelViewResolver" />