0
点赞
收藏
分享

微信扫一扫

hutool 导出excel

纽二 2022-04-20 阅读 127
java

maven

 <dependency>
     <groupId>cn.hutool</groupId>
     <artifactId>hutool-all</artifactId>
     <version>5.7.14</version>
</dependency>

model

import java.math.BigDecimal;

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

/**
 * @Description:
 * @Auther: Wangtianming
 * @Date: 2022/4/19 23:09
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class TeacherExcelDto {

    private Long id;

    private String teacherName;

    private String teacherClass;

    private String address;

    //入职日期
    private String dateEntry;

    //综合评分
    private BigDecimal score;

    private int gender;

    private String genderName;

}

Controller

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

import javax.servlet.ServletOutputStream;
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.gemantic.cnooc.model.TeacherExcelDto;
import com.google.common.collect.Lists;

import cn.hutool.poi.excel.ExcelUtil;
import cn.hutool.poi.excel.ExcelWriter;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;

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

    private static final String FILE_HEADER_KEY = "Content-Disposition";
    private static final String FILE_CONTENT_TYPE = "application/vnd.ms-excel;charset=utf-8";

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

        List<TeacherExcelDto> pageList = Lists.newArrayList();
        TeacherExcelDto a = new TeacherExcelDto();
        a.setId(1l);
        a.setTeacherName("王老师");
        a.setTeacherClass("五年纪");
        a.setAddress("北京小学教师楼");
        a.setDateEntry(getDateToString(System.currentTimeMillis()));
        a.setScore(new BigDecimal(88.98));
        a.setGender(1);
        pageList.add(a);
        pageList.forEach(b -> {
            if (a.getGender() == 1) {
                a.setGenderName("男");
            } else {
                a.setGenderName("女");
            }
        });
        ExcelWriter writer = ExcelUtil.getWriter();
        writer.setOnlyAlias(true);
        try (ServletOutputStream out = response.getOutputStream()) {
            writer.addHeaderAlias("id", "序号");
            writer.addHeaderAlias("teacherName", "姓名");
            writer.addHeaderAlias("teacherClass", "班级");
            writer.addHeaderAlias("genderName", "性别");
            writer.addHeaderAlias("score", "综合评分");
            writer.addHeaderAlias("address", "住址");
            writer.addHeaderAlias("dateEntry", "入职日期");
            response.setContentType(FILE_CONTENT_TYPE);
            String fileName = URLEncoder.encode("教师信息", "UTF-8");
            response.setHeader(FILE_HEADER_KEY, "attachment;filename=" + fileName + ".xls");
            writer.write(pageList);
            writer.flush(out, true);
        } catch (Exception e) {
            log.error("导出详情excel 出现错误", e);
        }
    }


    /**
     * 时间戳转换成字符串
     */
    public static String getDateToString(long time) {
        Date d = new Date(time);
        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return sf.format(d);
    }

}

导出效果

在这里插入图片描述

举报

相关推荐

0 条评论