springmvc导出excel终极方案

springmvc导出excel终极方案

 

1. 准备工作

1.1 maven依赖



    org.apache.poi
    poi-ooxml
    3.17



    org.apache.poi
    poi
    3.17


    org.projectlombok
    lombok
    true

1.2 spring版本>=4.2

2. 具体代码

2.1继承spring提供的类

public class ExcelView extends AbstractXlsxStreamingView {
    @Override
    protected void buildExcelDocument(Map model, Workbook workbook, HttpServletRequest request, HttpServletResponse response) throws Exception {
        // 从model取出要调用的方法
        val method =(int) model.get("method");
        var name = model.get("name");
        if (name == null) {
            name = "excel";
        }
        // 1.设置下载文件的文件名
        response.setHeader("Content-Disposition",  name + "xlsx");
        // 2. 向workbook中填充数据
        if (method == 1) {
            import1(model, workbook, request, response);
        } else if (method == 2) {
            import2(model, workbook, request, response);
        }
        // 调用其他方法
    }

    @SuppressWarnings("unchecked")
    private void import1(Map model, Workbook workbook, HttpServletRequest request, HttpServletResponse response) {
        val data = (List) model.get("data");
        val sheet1 = workbook.createSheet("sheet1");
        val row = sheet1.createRow(0);
        val cell0 = row.createCell(0);
        cell0.setCellValue(data.get(0));
    }

    private void import2(Map model, Workbook workbook, HttpServletRequest request, HttpServletResponse response) {

    }
}

2.2 controller层

@GetMapping("/excel1")
    public View excel1(Model model) {
        model.addAttribute("method", 1);
        model.addAttribute("name", "excel1");
        val integers = new ArrayList(0);
        integers.add(1);
        integers.add(2);
        model.addAttribute("data",integers);
        return new ExcelView();
    }


 

你可能感兴趣的:(spring)