“POI+注解+反射”实现Excel单sheet页导入单个Bean中;支持指定行范围导入到Bean的List<SubBean>中

因项目需求,Excel模板存在多处行合并和列合并,需要导入指定单元格的数据,并且存在多行数据相同情况;同时不知道后续Excel模板是否会变动。所以利用POI、注解和反射实现一个工具类,需要维护与单sheet页对应的Java Bean上的注解。

一、注解:

1、指定单元格注解,指定行、列、数据类型

/**
 * Excel单元格
 */
@Documented
@Inherited
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ExcelCell {
    /**
     * excel行数
     *
     * @return 行数
     */
    int row() default 0;

    /**
     * excel列数
     *
     * @return 列数
     */
    int col() default 0;

    /**
     * excel单元格对应java的数据类型
     *
     * @return 数据类型
     */
    String type() default "String";
}

2、指定开始行和结束行

@Documented
@Inherited
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ExcelRow {

    /**
     * excel开始行
     *
     * @return 开始行
     */
    int startRow();

    /**
     * excel结束行
     *
     * @return 结束行
     */
    int endRow();

}

二、工具类

大概思路:

        利用反射获取Model的属性,根据属性上的注解(ExcelCell)得到该属性对应sheet页哪个单元格和数据类型,然后获取单元格的数据并放到Model中;如果单元格中存在某几行的数据可以抽取成一个SubModel的列表,此时根据注解(ExcelRow)得到行范围,根据SubModel和行范围获取到一个数据集并放到Model中。

public class ExcelImportUtil {

    /**
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值