springmvc导出excel终极方案

springmvc导出excel终极方案

 

1. 准备工作

1.1 maven依赖

<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.17</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.17</version>
</dependency>
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>

1.2 spring版本>=4.2

2. 具体代码

2.1继承spring提供的类

public class ExcelView extends AbstractXlsxStreamingView {
    @Override
    protected void buildExcelDocument(Map<String, Object> 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<String, Object> model, Workbook workbook, HttpServletRequest request, HttpServletResponse response) {
        val data = (List<Integer>) 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<String, Object> 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<Integer>(0);
        integers.add(1);
        integers.add(2);
        model.addAttribute("data",integers);
        return new ExcelView();
    }


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值