前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >EasyPOI解析Excel文件

EasyPOI解析Excel文件

作者头像
彼岸舞
发布2020-11-27 14:47:36
1.7K0
发布2020-11-27 14:47:36
举报

之前写过一篇导出Excel的文章,时隔这么长时间,再写一篇解析吧

采用EasyPOI技术解析Excel,我感觉这个还是挺好用的,也可能是我没有接触过更好的技术了[捂脸]

导入Maven依赖:

代码语言:javascript
复制
<!-- https://mvnrepository.com/artifact/cn.afterturn/easypoi-web -->
<dependency>
    <groupId>cn.afterturn</groupId>
    <artifactId>easypoi-web</artifactId>
    <version>3.0.3</version>
</dependency>

根据Excel定义模型(Model)

代码语言:javascript
复制
package model;

import cn.afterturn.easypoi.excel.annotation.Excel;

import java.io.Serializable;
import java.math.BigDecimal;

/**
    * 件
 * @author ZYGisComputer
 */
public class T0079J implements Serializable {
    /**
    * ID
    */
    private String f000Did;

    @Excel(name = "bh")
    private String bh;

    private String f001Pid;

    private String f004OrgCode;

    private String f011Dasjkzbz;

    private String f012Titleinitials;

    private BigDecimal numofefile;

    @Excel(name = "swwz")
    private String swwz;

    @Excel(name = "ycdd")
    private String ycdd;

    @Excel(name = "ycmc")
    private String ycmc;

    private String ycqm;

    @Excel(name = "ycrq")
    private String ycrq;

    @Excel(name = "ycsj")
    private String ycsj;

    
    @Excel(name = "zh")
    private String zh;

   
    @Excel(name = "zyyy")
    private String zyyy;

    public String getF000Did() {
        return f000Did;
    }
}

根据Excel模板定义模型,这里只演示最简单的模型定义,也没有增加校验信息,如果需要增加校验信息的可以,百度一下

定义解析工具类:

代码语言:javascript
复制
package utils;

import cn.afterturn.easypoi.excel.ExcelImportUtil;
import cn.afterturn.easypoi.excel.entity.ImportParams;
import exception.TypeMismatchException;
import model.T0079J;

import java.io.File;
import java.util.List;

/**
 * ExcelUtil 工具类
 * @author ZYGisComputer
 */
public class ExcelUtil {

    private static final String DIAN = ".";

    private static final String XLS = "xls";

    private static final String XLSX = "xlsx";

    public static List<T0079J> parseExcel(File file,Class<?> clazz) throws TypeMismatchException {
        if(checkIsExcel(file)){
            return ExcelImportUtil.importExcel(file, clazz, new ImportParams());
        }
        throw new TypeMismatchException("文件格式错误!");

    }

    public static boolean checkIsExcel(File file){
        if (null != file) {
            String fileName = file.getName();
            if(!fileName.contains(DIAN)){
                return false;
            }
            String type = fileName.substring(fileName.lastIndexOf(".") + 1);
            return XLS.equalsIgnoreCase(type) || XLSX.equalsIgnoreCase(type);
        }
        throw new NullPointerException("文件为空");
    }

}

因为我的是文件直接写Main方法了

调用:

代码语言:javascript
复制
package executer;

import exception.TypeMismatchException;
import model.T0079J;
import org.apache.commons.lang3.StringUtils;
import utils.ExcelUtil;

import java.io.File;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

/**
 * @author ZYGisComputer
 */
public class ImportT0097J {

    public static void main(String[] args) throws TypeMismatchException {


        File file = new File("C:\\File\\2020-11\\1.xls");

        List<T0079J> t0079JList = ExcelUtil.parseExcel(file, T0079J.class);

        for (T0079J x : t0079JList) {
            if (null!=x.getYcrq()) {
          // 格式化日期
                System.out.println(new SimpleDateFormat("yyyy/MM/dd").format(x.getYcrq()));
            }
            if (null!=x.getYcsj()) {
          // 格式化日期
                System.out.println(new SimpleDateFormat("HH:mm").format(x.getYcsj()));
            }
//            System.out.println(x);
        }
        System.out.println(1);

    }

}

因为之前没有考虑日期的原因结果解析后的结果是直接的标准日期,处理起来比较费力

把模型中的ycrq和ycsj改为Date类型 util包下的

这样格式化日期比较简单

到此解析成功

因为数据是涉密的,就不贴正式的Excel和解析Excel的截图了

贴一个简单的吧

上面的首行名称对应 @Excel注解中的name值就可以了

比如这个图来说就是

@Excel(name="id")

@Excel(name="姓名")

....

不需要解析的字段不加@Excel就可以了

作者:彼岸舞

时间:2020\11\24

内容关于:POI

本文属于作者原创,未经允许,禁止转发

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-11-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 导入Maven依赖:
  • 根据Excel定义模型(Model)
  • 定义解析工具类:
  • 调用:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档