zoukankan      html  css  js  c++  java
  • easyPOI使用

    更多的easyPOI资源的网在easypoi的官网。

    1 在pom.xml中添加依赖

    <dependency>
                <groupId>cn.afterturn</groupId>
                <artifactId>easypoi-base</artifactId>
                <version>3.0.3</version>
            </dependency>
            <dependency>
                <groupId>cn.afterturn</groupId>
                <artifactId>easypoi-web</artifactId>
                <version>3.0.3</version>
            </dependency>
            <dependency>
                <groupId>cn.afterturn</groupId>
                <artifactId>easypoi-annotation</artifactId>
                <version>3.0.3</version>
            </dependency>

    2 工具类

    package com.hhsj.tools.excelUtils;
    
    import cn.afterturn.easypoi.excel.ExcelExportUtil;
    import cn.afterturn.easypoi.excel.ExcelImportUtil;
    import cn.afterturn.easypoi.excel.entity.ExportParams;
    import cn.afterturn.easypoi.excel.entity.ImportParams;
    import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
    import org.apache.commons.lang3.StringUtils;
    import org.apache.poi.ss.usermodel.Workbook;
    import org.springframework.web.multipart.MultipartFile;
    
    import javax.servlet.http.HttpServletResponse;
    import java.io.File;
    import java.io.IOException;
    import java.io.InputStream;
    import java.net.URL;
    import java.net.URLEncoder;
    import java.util.List;
    import java.util.Map;
    import java.util.NoSuchElementException;
    
    public class ExcelUtils {
        /**
         * excel 导出
         *
         * @param list           数据
         * @param title          标题
         * @param sheetName      sheet名称
         * @param pojoClass      pojo类型
         * @param fileName       文件名称
         * @param isCreateHeader 是否创建表头
         * @param response
         */
        public static void exportExcel(List<?> list, String title, String sheetName, Class<?> pojoClass, String fileName, boolean isCreateHeader, HttpServletResponse response) throws IOException {
            ExportParams exportParams = new ExportParams(title, sheetName, ExcelType.XSSF);
            exportParams.setCreateHeadRows(isCreateHeader);
            defaultExport(list, pojoClass, fileName, response, exportParams);
        }
    
        /**
         * excel 导出
         *
         * @param list      数据
         * @param title     标题
         * @param sheetName sheet名称
         * @param pojoClass pojo类型
         * @param fileName  文件名称
         * @param response
         */
        public static void exportExcel(List<?> list, String title, String sheetName, Class<?> pojoClass, String fileName, HttpServletResponse response) throws IOException {
            defaultExport(list, pojoClass, fileName, response, new ExportParams(title, sheetName, ExcelType.XSSF));
        }
    
        /**
         * excel 导出
         *
         * @param list         数据
         * @param pojoClass    pojo类型
         * @param fileName     文件名称
         * @param response
         * @param exportParams 导出参数
         */
        public static void exportExcel(List<?> list, Class<?> pojoClass, String fileName, ExportParams exportParams, HttpServletResponse response) throws IOException {
            defaultExport(list, pojoClass, fileName, response, exportParams);
        }
    
        /**
         * excel 导出
         *
         * @param list     数据
         * @param fileName 文件名称
         * @param response
         */
        public static void exportExcel(List<Map<String, Object>> list, String fileName, HttpServletResponse response) throws IOException {
            defaultExport(list, fileName, response);
        }
    
        /**
         * 默认的 excel 导出
         *
         * @param list         数据
         * @param pojoClass    pojo类型
         * @param fileName     文件名称
         * @param response
         * @param exportParams 导出参数
         */
        private static void defaultExport(List<?> list, Class<?> pojoClass, String fileName, HttpServletResponse response, ExportParams exportParams) throws IOException {
            Workbook workbook = ExcelExportUtil.exportExcel(exportParams, pojoClass, list);
            downLoadExcel(fileName, response, workbook);
        }
    
        /**
         * 默认的 excel 导出
         *
         * @param list     数据
         * @param fileName 文件名称
         * @param response
         */
        private static void defaultExport(List<Map<String, Object>> list, String fileName, HttpServletResponse response) throws IOException {
            Workbook workbook = ExcelExportUtil.exportExcel(list, ExcelType.HSSF);
            downLoadExcel(fileName, response, workbook);
        }
    
        /**
         * 下载
         *
         * @param fileName 文件名称
         * @param response
         * @param workbook excel数据
         */
        private static void downLoadExcel(String fileName, HttpServletResponse response, Workbook workbook) throws IOException {
            try {
                response.setCharacterEncoding("UTF-8");
                response.setHeader("content-Type", "application/vnd.ms-excel");
                response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName,"UTF-8") + "." + ExcelTypeEnum.XLSX.getValue());
                workbook.write(response.getOutputStream());
            } catch (Exception e) {
                throw new IOException(e.getMessage());
            }
        }
    
        /**
         * excel 导入
         *
         * @param filePath   excel文件路径
         * @param titleRows  标题行
         * @param headerRows 表头行
         * @param pojoClass  pojo类型
         * @param <T>
         * @return
         */
        public static <T> List<T> importExcel(String filePath, Integer titleRows, Integer headerRows, Class<T> pojoClass) throws IOException {
            if (StringUtils.isBlank(filePath)) {
                return null;
            }
            ImportParams params = new ImportParams();
            params.setTitleRows(titleRows);
            params.setHeadRows(headerRows);
            params.setNeedSave(true);
            params.setSaveUrl("/excel/");
            try {
                return ExcelImportUtil.importExcel(new File(filePath), pojoClass, params);
            } catch (NoSuchElementException e) {
                throw new IOException("模板不能为空");
            } catch (Exception e) {
                throw new IOException(e.getMessage());
            }
        }
    
        /**
         * excel 导入
         *
         * @param file      excel文件
         * @param pojoClass pojo类型
         * @param <T>
         * @return
         */
        public static <T> List<T> importExcel(MultipartFile file, Class<T> pojoClass) throws IOException {
            return importExcel(file, 1, 1, pojoClass);
        }
    
        /**
         * excel 导入
         *
         * @param file       excel文件
         * @param titleRows  标题行
         * @param headerRows 表头行
         * @param pojoClass  pojo类型
         * @param <T>
         * @return
         */
        public static <T> List<T> importExcel(MultipartFile file, Integer titleRows, Integer headerRows, Class<T> pojoClass) throws IOException {
            return importExcel(file, titleRows, headerRows, false, pojoClass);
        }
    
        /**
         * excel 导入
         *
         * @param file       上传的文件
         * @param titleRows  标题行
         * @param headerRows 表头行
         * @param needVerfiy 是否检验excel内容
         * @param pojoClass  pojo类型
         * @param <T>
         * @return
         */
        public static <T> List<T> importExcel(MultipartFile file, Integer titleRows, Integer headerRows, boolean needVerfiy, Class<T> pojoClass) throws IOException {
            if (file == null) {
                return null;
            }
            try {
                return importExcel(file.getInputStream(), titleRows, headerRows, needVerfiy, pojoClass);
            } catch (Exception e) {
                throw new IOException(e.getMessage());
            }
        }
    
        /**
         * excel 导入
         *
         * @param inputStream 文件输入流
         * @param titleRows   标题行
         * @param headerRows  表头行
         * @param needVerfiy  是否检验excel内容
         * @param pojoClass   pojo类型
         * @param <T>
         * @return
         */
        public static <T> List<T> importExcel(InputStream inputStream, Integer titleRows, Integer headerRows, boolean needVerfiy, Class<T> pojoClass) throws IOException {
            if (inputStream == null) {
                return null;
            }
            ImportParams params = new ImportParams();
            params.setTitleRows(titleRows);
            params.setHeadRows(headerRows);
            params.setSaveUrl("/excel/");
            params.setNeedSave(true);
            params.setNeedVerfiy(needVerfiy);
            try {
                return ExcelImportUtil.importExcel(inputStream, pojoClass, params);
            } catch (NoSuchElementException e) {
                throw new IOException("excel文件不能为空");
            } catch (Exception e) {
                throw new IOException(e.getMessage());
            }
        }
    
        /**
         * Excel 类型枚举
         */
        enum ExcelTypeEnum {
            XLS("xls"), XLSX("xlsx");
            private String value;
    
            ExcelTypeEnum(String value) {
                this.value = value;
            }
    
            public String getValue() {
                return value;
            }
    
            public void setValue(String value) {
                this.value = value;
            }
        }
    }
    View Code

    3 实体类

    package com.hhsj.entity.salaryWorkAttendance;
    
    
    import cn.afterturn.easypoi.excel.annotation.Excel;
    import com.fasterxml.jackson.annotation.JsonFormat;
    import io.swagger.annotations.ApiModel;
    import io.swagger.annotations.ApiModelProperty;
    import lombok.Data;
    import lombok.EqualsAndHashCode;
    import org.hibernate.annotations.GenericGenerator;
    import org.springframework.data.annotation.CreatedDate;
    import org.springframework.data.annotation.LastModifiedDate;
    import org.springframework.data.jpa.domain.support.AuditingEntityListener;
    
    import javax.persistence.*;
    import java.util.Date;
    
    @Data
    @Entity
    @EqualsAndHashCode(callSuper = false)
    @Table(name = "c_work_attendance")
    @EntityListeners(AuditingEntityListener.class)
    @ApiModel(value = "WorkAttendance" ,description = "考勤信息表")
    public class WorkAttendance {
        @Id
        @GeneratedValue(generator = "system-uuid")
        @GenericGenerator(name = "system-uuid", strategy = "uuid")
        private String id;
    
        private String corpId;
    
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
        @CreatedDate
        private Date createTime;
    
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
        @LastModifiedDate
        private Date updateTime;
    
        @Excel(name = "员工姓名",orderNum = "0",width = 15)
        @ApiModelProperty(value = "员工姓名")
        private String employeeName;
    
        @Excel(name = "岗位",orderNum = "1",width = 15)
        @ApiModelProperty(value = "岗位")
        private String post;
    
        @Excel(name = "对应器械",orderNum = "2",width = 15)
        @ApiModelProperty(value = "对应器械")
        private String correspondingApparatus;
    
        @Excel(name = "关联项目",orderNum = "3",width = 15)
        @ApiModelProperty(value = "关联项目")
        private String relatedItems;
    
        @Excel(name = "装卸点选择",orderNum = "4",width = 15)
        @ApiModelProperty(value = "装卸点选择")
        private String pointChoice;
    
        @Excel(name = "考勤时间",orderNum = "5",format = "yyyy-MM-dd HH:mm:ss",width = 25)
        @ApiModelProperty(value = "考勤时间")
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
        private Date attendanceTime;
    
        @Excel(name = "考勤类型",orderNum = "7",width = 15)
        @ApiModelProperty(value = "考勤类型")
        private String attendanceType;
    
        @Excel(name = "位置",orderNum = "8",width = 15)
        @ApiModelProperty(value = "位置")
        private String position;
    
        @ApiModelProperty(value = "现场照片")
        private String img;
    
    
    }
    View Code

    4 具体操作

    package com.hhsj.service.salaryWorkAttendance.impl;
    
    import com.hhsj.common.Result;
    import com.hhsj.entity.salaryWorkAttendance.WorkAttendance;
    import com.hhsj.exception.NormalException;
    import com.hhsj.repository.salaryWorkAttendance.WorkAttendanceRepository;
    import com.hhsj.request.salaryWorkAttendance.WorkAttendanceRequest;
    import com.hhsj.service.salaryWorkAttendance.IWorkAttendanceService;
    import com.hhsj.token.TokenUtils;
    import com.hhsj.tools.excelUtils.ExcelUtils;
    import org.apache.commons.lang3.StringUtils;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.data.domain.Page;
    import org.springframework.data.domain.PageRequest;
    import org.springframework.data.domain.Pageable;
    import org.springframework.data.domain.Sort;
    import org.springframework.data.jpa.domain.Specification;
    import org.springframework.stereotype.Service;
    import org.springframework.transaction.annotation.Transactional;
    import org.springframework.web.multipart.MultipartFile;
    
    import javax.persistence.criteria.CriteriaBuilder;
    import javax.persistence.criteria.CriteriaQuery;
    import javax.persistence.criteria.Predicate;
    import javax.persistence.criteria.Root;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;
    import java.util.Objects;
    
    @Service
    public class WorkAttendanceServiceImpl implements IWorkAttendanceService {
        @Autowired
        private WorkAttendanceRepository workAttendanceRepository;
    
        @Autowired
        private TokenUtils tokenUtils;
    
    
    
        @Override
        @Transactional(readOnly = false,rollbackFor = Exception.class)
        public Result<String> workAttendanceImport(MultipartFile file) {
            String corpId = tokenUtils.getCurrentCorpId();
            //获取上传文件的名称
            String fileName = file.getOriginalFilename();
            if (!Objects.requireNonNull(fileName).matches("^.+\.(?i)(xls)$") && !fileName.matches("^.+\.(?i)(xlsx)$")) {
                throw new NormalException("上传文件格式不正确");
            }
            try {
                List<WorkAttendance> attendances = ExcelUtils.importExcel(file,WorkAttendance.class);
                if (attendances != null && attendances.size() != 0){
                    for (WorkAttendance attendance : attendances) {
                        attendance.setCorpId(corpId);
                        workAttendanceRepository.save(attendance);
                    }
                }
    
            }catch (Exception e){
                throw new NormalException("上传失败");
            }
            return Result.<String>builder().success().message("上传成功").build();
        }
    
        @Override
        public Result<String> workAttendanceExport(HttpServletResponse response) {
            WorkAttendance workAttendance = new WorkAttendance();
            workAttendance.setAttendanceTime(new Date());
            List<WorkAttendance>  list = new ArrayList<>();
            list.add(workAttendance);
            try {
                ExcelUtils.exportExcel(list,"考勤模板","考勤模板",WorkAttendance.class,"kaoqin",response);
            } catch (IOException e) {
                throw new NormalException("模板下载失败");
            }
            return Result.<String>builder().success().message("导出成功").build();
        }
    }
  • 相关阅读:
    8.17 纯css画一个着重号图标
    8.16 val()和html()的问题
    8.14 git??sourceTree??
    7.27-8.10 Problems
    To be a better me
    【LeetCode刷题】Set and bitset
    【LeetCode刷题】求平方根
    【LeetCode刷题】爬楼梯问题
    大学四年就这样,么了~
    硬件综合实习——51单片机四则运算带括号计算器
  • 原文地址:https://www.cnblogs.com/cl-rr/p/10936779.html
Copyright © 2011-2022 走看看