EasyPoi表格导入添加校验

这篇具有很好参考价值的文章主要介绍了EasyPoi表格导入添加校验。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

项目添加maven依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.2.4</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <groupId>org.example</groupId>
    <artifactId>easypoi-demo</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--easy poi 依赖-->
        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-spring-boot-starter</artifactId>
            <version>4.5.0</version>
        </dependency>
        <!--hibernate校验-->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>5.4.1.Final</version>
        </dependency>
        <dependency>
            <groupId>javax.el</groupId>
            <artifactId>javax.el-api</artifactId>
            <version>3.0.0</version>
        </dependency>

        <dependency>
            <groupId>org.glassfish.web</groupId>
            <artifactId>javax.el</artifactId>
            <version>2.2.6</version>
        </dependency>
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.8.20</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.alibaba.fastjson2</groupId>
            <artifactId>fastjson2</artifactId>
            <version>2.0.48</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>3.1.2</version>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

实体类

package com.demo.entity;

import cn.afterturn.easypoi.excel.annotation.Excel;
import cn.afterturn.easypoi.excel.annotation.ExcelIgnore;
import cn.afterturn.easypoi.handler.inter.IExcelDataModel;
import cn.afterturn.easypoi.handler.inter.IExcelModel;
import lombok.Data;


@Data
public class User implements IExcelDataModel, IExcelModel {

    @Excel(name = "序号", width = 20)
    private String serialNum;

    @Excel(name = "姓名", width = 20)
    private String name;

    @Excel(name = "性别", width = 20)
    private String gender;

    /**
     * 行号
     */
    @ExcelIgnore
    private Integer rowNum;

    /**
     * 错误信息
     */
    @ExcelIgnore
    private String errorMsg;
}

自定义校验

package com.demo.util;

import cn.afterturn.easypoi.excel.entity.result.ExcelVerifyHandlerResult;
import cn.afterturn.easypoi.handler.inter.IExcelVerifyHandler;
import cn.hutool.core.util.ObjectUtil;
import com.demo.entity.User;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * 自定义校验
 */
@Component
public class UserVerifyHandler implements IExcelVerifyHandler<User> {
    @Override
    public ExcelVerifyHandlerResult verifyHandler(User user) {
        String[] genders = {"男", "女"};
        if (ObjectUtil.isEmpty(user.getName()) && ObjectUtil.isEmpty(user.getGender())) {
        	// 姓名和性别都为空,就不处理,算校验通过
            return new ExcelVerifyHandlerResult(true);
        }
        List<String> genderList = new ArrayList<>(Arrays.asList(genders));
        if (!genderList.contains(user.getGender())) {
            return new ExcelVerifyHandlerResult(false, "性别不合法");
        }
        return new ExcelVerifyHandlerResult(true);
    }
}

controller

package com.demo.controller;

import cn.afterturn.easypoi.excel.ExcelImportUtil;
import cn.afterturn.easypoi.excel.entity.ImportParams;
import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult;
import com.demo.entity.User;
import com.demo.util.UserVerifyHandler;
import jakarta.annotation.Resource;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.List;

@RestController
public class UserController {

    /**
     * 注入自定义处理器
     */
    @Resource
    private UserVerifyHandler userVerifyHandler;

    @PostMapping(value = "/excel/importTest")
    public List<User> excelImportTest(@RequestParam("file") MultipartFile file) throws Exception {
        ImportParams params = new ImportParams();
        params.setHeadRows(1);
        // 代表导入这里是需要验证的
        params.setNeedVerify(true);
        // 校验处理接口
        params.setVerifyHandler(userVerifyHandler);
        ExcelImportResult<User> importResult = ExcelImportUtil.importExcelMore(file.getInputStream(), User.class, params);
        List<User> userList = importResult.getList();
        // isVerifyFail:是否存在校验失败,true为校验失败,false为校验成功
        if (importResult.isVerifyFail() || userList.isEmpty()) {
            // 校验失败或者导入的数据为空,输出错误记录的表格
            Workbook workbook = importResult.getFailWorkbook();
            String path = "C:\\Users\\16837\\Desktop\\error.xls";
            OutputStream outputStream = new FileOutputStream(path, true);
            workbook.write(outputStream);

            // 关闭输出流
            workbook.close();
            outputStream.close();
        }
        return userList;
    }
}

测试结果

EasyPoi表格导入添加校验,java,java
页面生成到处错误文件的excel
EasyPoi表格导入添加校验,java,java
表格内容如下
EasyPoi表格导入添加校验,java,java文章来源地址https://www.toymoban.com/news/detail-850249.html

到了这里,关于EasyPoi表格导入添加校验的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • easypoi 导出word表格

    template.docx 模板内容: {{0}} {{1}} {{2}} {{3}} {{4}} {{5}} 学生姓名 学生年龄 学生生日 语文成绩 数学成绩 template_job.docx 模板内容: 名称 年龄 地址 名称2 {{user.name}} {{user.age}} {{user.address}} {{user.other}} 公司名称 地址 {{$fe:jobs t.name t.address}}

    2024年02月13日
    浏览(77)
  • java实现excel的导入导出(带参数校验:非空校验、数据格式校验)

    本次封装引入阿里开源框架EasyExcel,EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目。在尽可能节约内存的情况下支持读写百M的Excel。 github地址:GitHub - alibaba/easyexcel: 快速、简洁、解决大文件内存溢出的java处理Excel工具 。 64M内存20秒读取75M(46W行25列)的Excel(3.0.2

    2024年02月01日
    浏览(53)
  • EasyPoi快速入门(Excel导入导出工具)

    简介: easypoi是一款Excel快速导入导出的工具,最近有所使用,结合了网上的一些用法和官方文档的介绍,在在这里总结一下最简单的esaypoi导入Excel的实现,网上很多教程都已经封装了工具类,虽然方便,但第一次接触easypoi可能看的不是清晰,现在总结一下最为直观的SpringBoot集成easypoi快

    2023年04月22日
    浏览(32)
  • Easypoi实现表格导出(实现数据结构一对多,合并单元格)

    官方文档:EasyPoi教程_V1.0 1.添加maven依赖 2、导出对应的实体类(一对多中的“一”)     3、子集对象实体类(一对多中的“多”)   4、导出Excel的实现方法 4、实例  

    2024年02月08日
    浏览(29)
  • 导入Excel数据【EasyPoi实战系列】- 第480篇

    历史文章( 文章 累计480+) 《国内最全的Spring Boot系列之一》 《国内最全的Spring Boot系列之二》 《国内最全的Spring Boot系列之三》 《国内最全的Spring Boot系列之四》 《国内最全的Spring Boot系列之五》 《国内最全的Spring Boot系列之六》 【EasyPoi实战系列】Spring Boot使用EasyP

    2024年02月16日
    浏览(25)
  • easypoi 模板导入、导出合并excel单元格功能

    hutool 导出复杂excel(动态合并行和列) java使用poi读取跨行跨列excel springboot集成easypoi并使用其模板导出功能和遇到的坑 Easypoi Excel模板功能简要说明 easypoi 模板导出兼容合并单元格功能 高校校舍使用情况统计表 单位(盖章): 填表人: 部门负责人: 分管校领导: 填表日期:

    2023年04月22日
    浏览(40)
  • spring boot 整合EasyPoi导入导出,下载模版功能

    name:Excel中的列名; width:指定列的宽度; needMerge:是否需要纵向合并单元格; format:当属性为时间类型时,设置时间的导出导出格式; desensitizationRule:数据脱敏处理,3_4表示只显示字符串的前3位和后4位,其他为*号; replace:对属性进行替换; suffix:对数据添加后缀。

    2024年02月11日
    浏览(29)
  • springboot项目利用easypoi导入导出(包括一对多导出的动态列选择,以及普通导入)

    因为项目只涉及到一对多的导出,以及普通的导入,所以,本文只会涉及这方面的使用 导入的时候,有校验,如果有错误数据,就会返回错误数据的所在行,以及错误信息(如果需要返回错误信息的所在的那几行数据以及错误信息的excel文件的话,可以看看第三个参考文章,

    2023年04月21日
    浏览(27)
  • Easys Excel的表格导入(读)导出(写)-----java

    可以学习一些新知识: EasyExcel官方文档 - 基于Java的Excel处理工具 | Easy Excel excel的一些优点和缺点 java解析excel的框架有很多 : poi jxl,存在问题:非常的消耗内存, easyexcel 我们遇到再大的excel都不会出现内存溢出的问题 能够将一个原本3M excel文件,poi来操作将会占用内存 100MB,

    2024年02月13日
    浏览(43)
  • Java 使用hutool工具进行导出导入excel表格(代码很简单)

    创建一个Controller进行测试 

    2024年02月07日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包