总结:

  1. 导出:写操作,将数据库中的内容写入到excel表格中。
  2. 导入:读操作,将excel表格中的内容出来,插入到数据库中,一般都是先将excel表格中的内容使用流,读到集合(list)中,然后再对集合进行遍历插入。

一. easyExcel

1. 写(导出)

(1)pom依赖

<!--导入依赖-->
<dependencies><!--fastjson--><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version >1.2.62</version></dependency><!--easyexcel--><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version >2.2.0-beta2</version></dependency><!--日期格式化工具--><dependency><groupId>joda-time</groupId><artifactId>joda-time</artifactId><version>2.10.1</version></dependency><!--test--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>RELEASE</version><scope>compile</scope></dependency>
</dependencies>

(2)实体类(模板类)

字段上加注解就行:
@ExcelProperty("表中字段名")
@ExcelIgnore:要忽略的字段。

(3)业务层进行写操作

EasyExcel.write(文件名, 模板类.class).sheet("表名").doWrite(list集合);

2. 读(导入)

(1)监听器

// 1.继承AnalysisEventListener
public class DemoDataListener extends AnalysisEventListener<DemoData> {// 2.一行一行的读取内容(list集合),但是不读表头。@Overridepublic void invoke(DemoData data, AnalysisContext context) {//一般在这里进行导入集合操作(在项目中,一般所有业务操作,都在这个方法中进行)}// 3.读表头内容@Overridepublic void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {//将表头信息导入集合(实际中不需要)}// 4.所有都读取完了,执行这个方法@Overridepublic void doAfterAllAnalysed(AnalysisContext context) {//一般在这里进行插入数据库操作(当然这只是我个人认为的,在尚医通项目和在线教育项目中,这个项目都是空的,插入数据库的操作在invoke()方法中进行。而且invokeHeadMap方法也用不到,因为不需要读取表头信息,读取时导入,数据库中有字段(表头),不需要再导)//狂神讲的课中用到了这个方法,可以具体去看一下他的笔记}
}

(2)读

//EasyExcel.read(fileName, DemoData.class, new DemoDataListener()).sheet().doRead();
EasyExcel.read(文件名, 模板类.class, 监听器对象).sheet().doRead();

更多详细信息,可以看尚医通的笔记(语雀)。
https://www.yuque.com/docs/share/3df0e6c8-54d4-4b4c-9c2b-dc188e47345c?# 《EasyExcel》

二. POI-Excel

与EasyExcel相比,这个要难得多,比如:没有注解的使用,要导入表头部分需要手动导入。但是可以对POI-Excel进行封装,例如若依项目,就是对POI-Excel做了封装,让POI-Excel也可以使用注解,用法难度也不高,很。。可恶,被他装到了。但是我认为,还是使用EasyExcel简单方便一些(毕竟是阿里的)。
如果要问若依项目是如何对poi-excel进行封装的,那就是反射机制。不得不说封装的真大啊!
下面是若依如何获取表头的代码:

    /*** 获取字段注解信息*/public List<Object[]> getFields(){List<Object[]> fields = new ArrayList<Object[]>();List<Field> tempFields = new ArrayList<>();tempFields.addAll(Arrays.asList(clazz.getSuperclass().getDeclaredFields()));tempFields.addAll(Arrays.asList(clazz.getDeclaredFields()));for (Field field : tempFields){// 单注解if (field.isAnnotationPresent(Excel.class)){Excel attr = field.getAnnotation(Excel.class);if (attr != null && (attr.type() == Type.ALL || attr.type() == type)){field.setAccessible(true);fields.add(new Object[] { field, attr });}}// 多注解if (field.isAnnotationPresent(Excels.class)){Excels attrs = field.getAnnotation(Excels.class);Excel[] excels = attrs.value();for (Excel attr : excels){if (attr != null && (attr.type() == Type.ALL || attr.type() == type)){field.setAccessible(true);fields.add(new Object[] { field, attr });}}}}return fields;}

六.实战——Excel表格的导入和导出相关推荐

  1. 基于SpringBoot+EasyExcel+vue3实现excel表格的导入和导出

    目录 基于SpringBoot+EasyExcel+vue3实现excel表格的导入和导出 一.导入和导出 二.导出数据为excel实现过程 三.将excel中的数据导入到数据库中 基于SpringB ...

  2. java excel表格导入_Java实现Excel表格的导入和导出(一)

    多说两句:表格的导入导出,是比较常见的系统操作,一般涉及数据批量导入导出时会用到,以前遇到过的业务场景有批量添加会员信息,数据迁移等.实现工具,Apache的poi最为常见.实现简单,博客简单一记. ...

  3. php操作excel表格的导入和导出

    前言:对于excel大家肯定熟悉不过了的,那么我们在日常的业务中应该是有对这些文件的导入导出操作的 类的下载:composer require phpoffice/phpexcel,其中Classes ...

  4. 使用phpexcel将excel表格的导入导出

    使用phpexcel将excel表格的导入数据库 1–使用composer安装phpexcel包 composer require phpoffice/phpexcel -vvv 2-控制器 //导入 ...

  5. 用ado把excel数据写入oracle,如何将excel表格数据导入到oracle数据库对应的表中?!oracle导出excel文件...

    如何把excel里的表导入到oracle里 使用第三方工具吧,toad之类的 一个excel表格中有多个sheet,如何将其导入oracle数据库 户和要用DBA 最简单得建用户: create us ...

  6. 使用PHPExcel实现Excel文件的导入和导出(模板导出)

    在之前有写过一篇文章讲述了使用PHP快速生成excel表格文件并下载,这种方式生成Excel文件,生成速度很快,但是有缺点是: 1.单纯的生成Excel文件,生成的文件没有样式,单元格属性(填充色,宽 ...

  7. mysql 命令导入excel,【mysql命令导入excel表】excel表格怎样导入数据库

    怎么把excel里的数据导入数据库中的表中 打开企业管理器开要导入数数据库,在表上按右键,所务-->导入数据,弹出DTS导入/导出向导,按 下一步 , 2.选择数据源 Microsoft Exc ...

  8. oracle数据库表excel文件位置,“如何将excel表格数据导入到oracle数据库对应的表中?“数据库文件导入excel表格数据库中...

    如何实现Excel表格自动导入到数据库 库?是什么数据库?sql?access?mysql?我以sql2008为例子 1.打开SQL Server Management Studio-任务-数据 2. ...

  9. 用Matlab将Excel表格数据导入并绘制曲线

    用Matlab将Excel表格数据导入并绘制曲线 一般流程 常见问题 一般流程 准备一个已有数据的Excel表格,一般格式为 xlsx 格式: 打开Matlab,点击菜单栏中的导入数据,选择准备好的E ...

最新文章

  1. python实体类dict to object
  2. 通过NVIDIA PilotNet,人人都能变成人工智能的老师
  3. BZOJ 4810 莫队+bitset
  4. apache rewrite 二级域名
  5. Android中Adapter的notifyDataSetInvalidated()和notifyDataSetChanged()的区别
  6. 小孔成像总结_初中物理解题技巧+方法总结,初二初三都要看看!
  7. 【31】将文件间的编译依存关系降至最低
  8. 拦截 数据_大数据之六类Flume拦截器配置
  9. Linux的运行级别和chkconfig用法
  10. DataFrame计算corr()函数计算相关系数时,出现返回值为空或NaN的情况+np.log1p()
  11. 持续集成:软件质量改进和风险降低之道
  12. c3p0 mysql 连接池配置文件_使用XML配置c3p0数据库连接池
  13. qq空间登录参数详细分析及密码加密最新版
  14. 2022年自考专业考试(计算机应用)软件工程练习题
  15. linux用屏幕录制软件有哪些,Linux系统下推荐使用的5个屏幕录像软件是什么?
  16. php 微信h5支付 mweb,php微信H5支付讲解(MWEB)
  17. 第三方登录 人人php,php 使用curl模拟登录人人(校内)网的简单实例
  18. 13.ActiveMQ 优缺点
  19. Code Composer Studio设置断点,并不能停在断点的解决办法
  20. 25岁从零开始学习平面设计会不会晚

热门文章

  1. 【Tensorflow】你真的懂TensorFlow吗?Tensor是神马?为什么还会Flow?
  2. 学习累了休息一下——————看完不笑你厉害
  3. AlwaysOn实现主从切换
  4. python返回索引值_python 返回列表中某个值的索引方法
  5. 离散数学计算机专业论文,计算机与离散数学论文.doc
  6. java多线程(4) ----- Lock的使用
  7. R语言使用符号函数计算数据的正负特性、sign函数计算数据的正负符号返回0、1、-1
  8. 设置短信验证码开发的回调地址-短信平台验证码开发9
  9. 音频特效生成与算法 1
  10. 日期函数之Dateadd、Datediff