六.实战——Excel表格的导入和导出
总结:
- 导出:写操作,将数据库中的内容写入到excel表格中。
- 导入:读操作,将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表格的导入和导出相关推荐
- 基于SpringBoot+EasyExcel+vue3实现excel表格的导入和导出
目录 基于SpringBoot+EasyExcel+vue3实现excel表格的导入和导出 一.导入和导出 二.导出数据为excel实现过程 三.将excel中的数据导入到数据库中 基于SpringB ...
- java excel表格导入_Java实现Excel表格的导入和导出(一)
多说两句:表格的导入导出,是比较常见的系统操作,一般涉及数据批量导入导出时会用到,以前遇到过的业务场景有批量添加会员信息,数据迁移等.实现工具,Apache的poi最为常见.实现简单,博客简单一记. ...
- php操作excel表格的导入和导出
前言:对于excel大家肯定熟悉不过了的,那么我们在日常的业务中应该是有对这些文件的导入导出操作的 类的下载:composer require phpoffice/phpexcel,其中Classes ...
- 使用phpexcel将excel表格的导入导出
使用phpexcel将excel表格的导入数据库 1–使用composer安装phpexcel包 composer require phpoffice/phpexcel -vvv 2-控制器 //导入 ...
- 用ado把excel数据写入oracle,如何将excel表格数据导入到oracle数据库对应的表中?!oracle导出excel文件...
如何把excel里的表导入到oracle里 使用第三方工具吧,toad之类的 一个excel表格中有多个sheet,如何将其导入oracle数据库 户和要用DBA 最简单得建用户: create us ...
- 使用PHPExcel实现Excel文件的导入和导出(模板导出)
在之前有写过一篇文章讲述了使用PHP快速生成excel表格文件并下载,这种方式生成Excel文件,生成速度很快,但是有缺点是: 1.单纯的生成Excel文件,生成的文件没有样式,单元格属性(填充色,宽 ...
- mysql 命令导入excel,【mysql命令导入excel表】excel表格怎样导入数据库
怎么把excel里的数据导入数据库中的表中 打开企业管理器开要导入数数据库,在表上按右键,所务-->导入数据,弹出DTS导入/导出向导,按 下一步 , 2.选择数据源 Microsoft Exc ...
- oracle数据库表excel文件位置,“如何将excel表格数据导入到oracle数据库对应的表中?“数据库文件导入excel表格数据库中...
如何实现Excel表格自动导入到数据库 库?是什么数据库?sql?access?mysql?我以sql2008为例子 1.打开SQL Server Management Studio-任务-数据 2. ...
- 用Matlab将Excel表格数据导入并绘制曲线
用Matlab将Excel表格数据导入并绘制曲线 一般流程 常见问题 一般流程 准备一个已有数据的Excel表格,一般格式为 xlsx 格式: 打开Matlab,点击菜单栏中的导入数据,选择准备好的E ...
最新文章
- python实体类dict to object
- 通过NVIDIA PilotNet,人人都能变成人工智能的老师
- BZOJ 4810 莫队+bitset
- apache rewrite 二级域名
- Android中Adapter的notifyDataSetInvalidated()和notifyDataSetChanged()的区别
- 小孔成像总结_初中物理解题技巧+方法总结,初二初三都要看看!
- 【31】将文件间的编译依存关系降至最低
- 拦截 数据_大数据之六类Flume拦截器配置
- Linux的运行级别和chkconfig用法
- DataFrame计算corr()函数计算相关系数时,出现返回值为空或NaN的情况+np.log1p()
- 持续集成:软件质量改进和风险降低之道
- c3p0 mysql 连接池配置文件_使用XML配置c3p0数据库连接池
- qq空间登录参数详细分析及密码加密最新版
- 2022年自考专业考试(计算机应用)软件工程练习题
- linux用屏幕录制软件有哪些,Linux系统下推荐使用的5个屏幕录像软件是什么?
- php 微信h5支付 mweb,php微信H5支付讲解(MWEB)
- 第三方登录 人人php,php 使用curl模拟登录人人(校内)网的简单实例
- 13.ActiveMQ 优缺点
- Code Composer Studio设置断点,并不能停在断点的解决办法
- 25岁从零开始学习平面设计会不会晚
热门文章
- 【Tensorflow】你真的懂TensorFlow吗?Tensor是神马?为什么还会Flow?
- 学习累了休息一下——————看完不笑你厉害
- AlwaysOn实现主从切换
- python返回索引值_python 返回列表中某个值的索引方法
- 离散数学计算机专业论文,计算机与离散数学论文.doc
- java多线程(4) ----- Lock的使用
- R语言使用符号函数计算数据的正负特性、sign函数计算数据的正负符号返回0、1、-1
- 设置短信验证码开发的回调地址-短信平台验证码开发9
- 音频特效生成与算法 1
- 日期函数之Dateadd、Datediff