Java Web利用POI导出Excel简单例子
采用Spring mvc架构:
Controller层代码如下
Service层代码如下:
前台的js代码如下:
Controller层代码如下
- @Controller
- public class StudentExportController{
- @Autowired
- private StudentExportService studentExportService;
- @RequestMapping(value = "/excel/export")
- public void exportExcel(HttpServletRequest request, HttpServletResponse response)
- throws Exception {
- List<Student> list = new ArrayList<Student>();
- list.add(new Student(1000,"zhangsan","20"));
- list.add(new Student(1001,"lisi","23"));
- list.add(new Student(1002,"wangwu","25"));
- HSSFWorkbook wb = studentExportService.export(list);
- response.setContentType("application/vnd.ms-excel");
- response.setHeader("Content-disposition", "attachment;filename=student.xls");
- OutputStream ouputStream = response.getOutputStream();
- wb.write(ouputStream);
- ouputStream.flush();
- ouputStream.close();
- }
- }
Service层代码如下:
- @Service
- public class StudentExportService {
- String[] excelHeader = { "Sno", "Name", "Age"};
- public HSSFWorkbook export(List<Student> list) {
- HSSFWorkbook wb = new HSSFWorkbook();
- HSSFSheet sheet = wb.createSheet("Student");
- HSSFRow row = sheet.createRow((int) 0);
- HSSFCellStyle style = wb.createCellStyle();
- style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
- for (int i = 0; i < excelHeader.length; i++) {
- HSSFCell cell = row.createCell(i);
- cell.setCellValue(excelHeader[i]);
- cell.setCellStyle(style);
- sheet.autoSizeColumn(i);
- // sheet.SetColumnWidth(i, 100 * 256);
- }
- for (int i = 0; i < list.size(); i++) {
- row = sheet.createRow(i + 1);
- Student student = list.get(i);
- row.createCell(0).setCellValue(student.getSno());
- row.createCell(1).setCellValue(student.getName());
- row.createCell(2).setCellValue(student.getAge());
- }
- return wb;
- }
- }
前台的js代码如下:
- <script>
- function exportExcel(){
- location.href="excel/export";
- <!--这里不能用ajax请求,ajax请求无法弹出下载保存对话框-->
- }
- </script>