maven依赖

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>easyexcel</artifactId>
    <version>2.2.7</version>
</dependency>

Model

import java.math.BigDecimal;
import java.util.Date;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.fasterxml.jackson.annotation.JsonFormat;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @Description:
 * @Auther: Wangtianming
 * @Date: 2022/4/19 23:09
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class StudentExcelDto {
    @ExcelProperty(value = "序号",index = 0)
    private Long id;

    @ExcelProperty(value = "姓名",index = 1)
    private String studentName;

    @ExcelProperty(value = "班级",index = 2)
    @ColumnWidth(20)
    private String studentClass;

    @ExcelProperty(value = "住址",index = 3)
    private String address;

    @ExcelProperty(value = "入学日期",index = 4)
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date admissionDate;

    @ExcelProperty(value = "分数",index = 5)
    private BigDecimal score;

    @ExcelIgnore//导出忽略此字段
    private int gender;

    @ExcelProperty(value = "姓别",index = 6)
    private String genderName;

}

Controller


import java.math.BigDecimal;
import java.net.URLEncoder;
import java.util.Date;
import java.util.List;

import javax.servlet.http.HttpServletResponse;

import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.gemantic.cnooc.model.StudentExcelDto;
import com.google.common.collect.Lists;

import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;

/**
 * @Auther: Wangtianming
 * @Date: 2021/10/27 14:35
 * @Description:
 */
@RestController
@RequestMapping(path = "/student")
@Slf4j
public class StudentExcelController {

    @PostMapping(value = "exportExcel", headers = "Accept=application/octet-stream")
    @ApiOperation(value = "导出excel", notes = "导出excel")
    public void exportExcel(HttpServletResponse response) throws Exception {

        List<StudentExcelDto> pageList = Lists.newArrayList();
        StudentExcelDto a = new StudentExcelDto();
        a.setId(1l);
        a.setStudentName("小王");
        a.setStudentClass("五年纪");
        a.setAddress("北京小学");
        a.setAdmissionDate(new Date());
        a.setScore(new BigDecimal(100));
        a.setGender(1);
        pageList.add(a);
        pageList.forEach(b -> {
            if (a.getGender() == 1) {
                a.setGenderName("男");
            } else {
                a.setGenderName("女");
            }
        });
        // 导出Excel
        response.setContentType("application/vnd.ms-excel");
        response.setCharacterEncoding("utf-8");
        String fileName = URLEncoder.encode("班级信息", "UTF-8").replaceAll("\\+", "%20");
        response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
        ExcelWriter writer = EasyExcel.write(response.getOutputStream()).build();
        WriteSheet sheet = EasyExcel.writerSheet(0, "sheet").head(StudentExcelDto.class).build();
        writer.write(pageList, sheet);
        writer.finish();
    }

}

导出效果

在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐