此demo 是基于poi封装对象式注解导入导出,项目框架为springboot项目!

简单的说明一下此demo涉及到的知识点,希望能给初学者带来方便!

  1. poi-excel 基本操作(工具)
  2. 自定义注解的使用
  3. 全局异常捕获的定义
  4. jkd1.8新特性:Lambda 表达式 、函数式接口 等等
  5. 统一出参包装类
  6. lombok ...
  7. 比较适合初学者~

这份excel是无法定义复杂的excel模版的,只能适用于最简单的excel导入导出,若不符合需求,请自行更改~

大致说一下提供的excel工具吧!

导出:

    /**
* 导出模版
*
* @param excelName excel 名称
* @param clazz 数据集
* @param response 使用response可以导出到浏览器
* @param <T>
* @return
*/
public static <T> Boolean exportTemplate(String excelName, Class<T> clazz, HttpServletResponse response) /**
* 导出模版
*
* @param excelName excel 名称
* @param clazz 数据集
* @param type excel 类型
* @param response 使用response可以导出到浏览器
* @param <T>
* @return
*/
public static <T> Boolean exportTemplate(String excelName, Class<T> clazz, Type type, HttpServletResponse response) /**
* excel 导出 (对象)
*
* @param excelName excel 名称
* @param list 数据集
* @param clazz 反射clazz
* @param response 使用response可以导出到浏览器
* @param <T>
* @return
*/
public static <T> Boolean exportExcel(String excelName, List<T> list, Class<T> clazz, HttpServletResponse response) /**
* excel 导出 (对象)
*
* @param excelName excel 名称
* @param list 数据集
* @param clazz 反射clazz
* @param type excel 类型
* @param response 使用response可以导出到浏览器
* @param <T>
* @return
*/
public static <T> Boolean exportExcel(String excelName, List<T> list, Class<T> clazz, Type type, HttpServletResponse response) /**
* excel 导出 (Map)
*
* @param excelName excel 名称
* @param clazz 反射clazz
* @param list 数据集
* @param response 使用response可以导出到浏览器
* @param <T>
* @return
*/
public static <T> Boolean exportExcel(String excelName, Class<T> clazz, List<Map<String, Object>> list, HttpServletResponse response) /**
* excel 导出 (Map)
*
* @param excelName excel 名称
* @param clazz
* @param list 数据集
* @param type excel 类型
* @param response 使用response可以导出到浏览器
* @param <T>
* @return
*/
public static <T> Boolean exportExcel(String excelName, Class<T> clazz, List<Map<String, Object>> list, Type type, HttpServletResponse response)

导入:

    /**
* 传入文本对象输出list集合(导入)
*
* @param file 流文件
* @param clazz 要转义成的类对象
* @return
*/
public static <T> List<T> importExcel(MultipartFile file, Class<T> clazz)

excel注解类,提供了几个简单的判断处理:

/**
* <p>
* excel 注解
* </p>
*
* @author <a href="mailto:yangyanrui@yidianlife.com">xiaoyang</a>
* @version V0.0.1
* @date 2019年09月10日
*/
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD})
public @interface Excel { /**
* 表头中文
*
* @return
*/
String titleName(); /**
* 列宽
*
* @return
*/
int titleSize() default 30; /**
* 字段顺序 正序
*
* @return
*/
int orderNum(); /**
* 是否允许空值 ,默认不允许
* <p>
* false:不允许 true :允许
*
* @return
*/
boolean empty() default false; /**
* 内部类
*
* @return
*/
CellType type() default @CellType; /**
* 设置格式
* 默认:
* 时间:yyyy-MM-dd HH:mm:ss
* 小数点:两位,四舍五入
*
* @return
*/
@interface CellType { TimeType timeType() default TimeType.TIMEF_FORMAT; DecimalType decimalType() default DecimalType.two;
}
}

TimeType 工具类:

/**
* <p>
* 日期格式
* </p>
*
* @author <a href="mailto:yangyanrui@yidianlife.com">xiaoyang</a>
* @version V0.0.1
* @date 2019年09月20日
*/
public enum TimeType { /**
* yyyy-MM-dd
*/
DATE_FORMAT("yyyy-MM-dd"),
/**
* yyyy-MM
*/
YEAR_S_MONTH("yyyy-MM"),
/**
* yyyyMM
*/
YEAR_MONTH("yyyyMM"),
/**
* yyyy-MM-dd HH:mm:ss
*/
TIMEF_FORMAT("yyyy-MM-dd HH:mm:ss"),
/**
* yyyy-MM-dd HH:mm:ss.SSS
*/
MSEL_FORMAT("yyyy-MM-dd HH:mm:ss.SSS"),
/**
* yyyy年MM月dd日
*/
ZHCN_DATE_FORMAT("yyyy年MM月dd日"),
/**
* yyyy年MM月dd日HH时mm分ss秒
*/
ZHCN_TIME_FORMAT("yyyy年MM月dd日HH时mm分ss秒"),
/**
* yyyy年MM月dd日HH时mm分ss秒SSS毫秒
*/
ZHCN_MSEL_FORMAT("yyyy年MM月dd日HH时mm分ss秒SSS毫秒"),
/**
* yyyyMMdd
*/
DATE_STR_FORMAT("yyyyMMdd"),
/**
* yyyyMMddHHmmss
*/
TIME_STR_FORMAT("yyyyMMddHHmmss"),
/**
* yyyyMMddHHmmssSSS
*/
MSEL_STR_FORMAT("yyyyMMddHHmmssSSS"),
/**
* yyyy-MM-dd HH:mm
*/
MSEL_MIU_FORMAT("yyyy-MM-dd HH:mm"),
/**
* yyyyMMddHH
*/
MS_MIU_FORMAT("yyyyMMddHH"); /**
* 日期格式
*/
private String timeType; /**
* 日期格式
*
* @param timeType
*/
TimeType(String timeType) {
this.timeType = timeType;
} /**
* 获取日期格式
*
* @return
*/
public String getTimeType() {
return timeType;
}
}

DecimalType 工具类:

/**
* <p>
* 小数点格式
* </p>
*
* @author <a href="mailto:yangyanrui@yidianlife.com">xiaoyang</a>
* @version V0.0.1
* @date 2019年09月20日
*/
public enum DecimalType { /**
* 一位
*/
one(1, "0.0"),
/**
* 两位
*/
two(2, "0.00"),
/**
* 三位
*/
three(3, "0.000"),
/**
* 四位
*/
four(4, "0.0000"),
/**
* 五位
*/
five(5, "0.00000"); /**
* 日期格式
*/
private String decimal; private int scale; /**
* 日期格式
*
* @param scale
* @param decimal
*/
DecimalType(int scale, String decimal) {
this.scale = scale;
this.decimal = decimal;
} /**
* 获取日期格式
*
* @return
*/
public String getDecimal() {
return decimal;
} /**
* 获取日期格式
*
* @return
*/
public int getScale() {
return scale;
}
}

  附上GitHub地址:https://github.com/yangqiyue/excel

springboot-poi ---封装注解式导入导出的更多相关文章

  1. poi实现excel的导入导出功能

    Java使用poi实现excel的导入导出功能: 工具类ExcelUtil,用于解析和初始化excel的数据:代码如下 package com.raycloud.kmmp.item.service.u ...

  2. SpringBoot 实现 excel 全自由导入导出,性能强的离谱,用起来还特优雅

    一.简介 在实际的业务系统开发过程中,操作 Excel 实现数据的导入导出基本上是个非常常见的需求. 之前,我们有介绍一款非常好用的工具:EasyPoi,有读者提出在数据量大的情况下,EasyPoi ...

  3. 一个基于POI的通用excel导入导出工具类的简单实现及使用方法

    前言: 最近PM来了一个需求,简单来说就是在录入数据时一条一条插入到系统显得非常麻烦,让我实现一个直接通过excel导入的方法一次性录入所有数据.网上关于excel导入导出的例子很多,但大多相互借鉴. ...

  4. SSM中使用POI实现excel的导入导出

    环境:导入POI对应的包 环境: Spring+SpringMVC+Mybatis POI对应的包 <dependency> <groupId>org.apache.poi&l ...

  5. Java集成POI进行Excele的导入导出,以及报错: java.lang.AbstractMethodError..........

    报错信息如下 java.lang.AbstractMethodError: org.apache.poi.xssf.usermodel.XSSFCell.setCellType(Lorg/apache ...

  6. 用poi框架进行批量导入导出实例

    Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程式对Microsoft Office格式档案读和写的功能.我们这里使用poi对数据库中的数据进行批量导出,以及 ...

  7. 使用Poi对EXCLE的导入导出

    import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import ...

  8. springboot整合easyexcel实现Excel导入导出

    easyexcel:快速.简单避免OOM的java处理Excel工具 Java解析.生成Excel比较有名的框架有Apache poi.jxl.但他们都存在一个严重的问题就是非常的耗内存,poi有一套 ...

  9. POI实现excel的导入导出

    引入依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</arti ...

  10. poi管道流的导入导出

    /** * 导入学生信息 * * @param classid * @param uploadFilePath * @return */ public boolean uploadStudentFil ...

随机推荐

  1. CentOS 7(Linux)安装docker,执行yum install docker-io -y报错

    CentOS 7(Linux)安装Docker,执行yum install docker-io -y报错 一.执行yum install docker-io -y报错 Error: docker-ce ...

  2. css卡片样式

    .view-1-user-card { margin: 20px 5% 10px 5%; height: 124px; width: 90%; background: linear-gradient( ...

  3. 解决和根源:Unsolicited response received on idle HTTP channel starting with xxx

    环境:golang,使用http client,服务器:iis +aspx.net动作:head请求或其他此问题见于各种请求情况.核心是,http在活动期间收到了非预期的信息.一开始我也很纳-闷,因为 ...

  4. 西电oj109题处理字符串

    问题描述 从键盘输入一个字符串,将该字符串按下述要求处理后输出: 将ASCII码大于原首字符的各字符按原来相互间的顺序关系集中在原首字符的左边, 将ASCII码小于等于原首字符的各字符按升序集中在原首 ...

  5. win 11 VMware workstations b不可恢复的错误(vcpu-2)

    首先检查一下电脑有没有开启CPU虚拟化,我的已经开启了,按照百度的方法去控制面板卸载程序里面,找到VMware 右击更改 弹出的安装程序点修复,,结果修复出错了,显示写入文件D:\vm\glib-2. ...

  6. 解决 SMTP Error: data not accepted php邮件发送失败的问题

    php 发送邮件 出现  SMTP Error: data not accepted   1.正常情况下 都是正常的 但是偶尔 发送失败了 163.com 邮箱发送不了了. 所以去查了下问题所在  在 ...

  7. Nginx如何升级Openssl

    1. 什么是Openssl? 在计算机网络上,OpenSSL是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连线者的身份.这个包广泛被应用在互联网的网页服务器 ...

  8. 笔精墨妙,妙手丹青,微软开源可视化版本的ChatGPT:Visual ChatGPT,人工智能AI聊天发图片,Python3.10实现

    说时迟那时快,微软第一时间发布开源库Visual ChatGPT,把 ChatGPT 的人工智能AI能力和Stable Diffusion以及ControlNet进行了整合.常常被互联网人挂在嘴边的& ...

  9. 开源规则引擎——ice:致力于解决灵活繁复的硬编码问题

    背景介绍 业务中是否写了大量的 if-else?是否受够了这些 if-else 还要经常变动? 业务中是否做了大量抽象,发现新的业务场景还是用不上? 是否各种调研规则引擎,发现不是太重就是接入或维护太 ...

  10. Mybatisplus----DML编程控制

    乐观锁 (1)业务并发现象带来的问题:秒杀 执行: 1.在类对象中添加version属性,在数据库表中添加version字段(默认值为1) package com.itheima.domain; im ...