保健品网站可以做网站,资源网站平台建设方案,视频播放网站怎么做,做速卖通要关注的几个网站前言#xff1a;
我先讲一种网上信息的获取方式把#xff0c;虽然我感觉和后面的EasyExcel没有什么关系#xff0c;可能是因为这个项目这个操作很难实现#xff0c;不过也可以在此记录一下#xff0c;如果需要再拆出来也行。
看上了网页信息#xff0c;怎么抓到#x…前言
我先讲一种网上信息的获取方式把虽然我感觉和后面的EasyExcel没有什么关系可能是因为这个项目这个操作很难实现不过也可以在此记录一下如果需要再拆出来也行。
看上了网页信息怎么抓到
分析原网站如何获取信息用了那些接口
以知识星球用户举例: 打开F12进入控制台
这里可以刷新页面这个页面的请求就来了 复制url 这里推荐一个前端插件Fehelper 在浏览器插件商店应该就可以直接下载了 这个插件的作用就是格式化上面的数据要不然我们看到的就是一堆乱码 到此这个网页的信息就全在这个里面了。 下面才是这篇文章的重点
EasyExcel:
首先接触到了一个新的东西技术
肯定是看官方文档
关于Easyexcel | Easy Excel 官网
1第一步也是引入依赖 !-- easy Excel --dependencygroupIdcom.alibaba/groupIdartifactIdeasyexcel/artifactIdversion3.1.0/version/dependency
这里也有一个小插曲
就是我在找这个依赖的时候我网好卡打不开那个官网所以我就直接到maven repository官网里面直接去找了。
在此也贴一下这个步骤把 选取一个用的人多的稳定点的
2第二步获取一个最简单读的对象
这里为什么叫最简单读的对象其实是因为官网上这么说的哈哈哈 package com.usercenter.usercenterproject.once;import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;/***/
Data
public class XingQiuTableUserInfo {/*** id*/ExcelProperty(成员编号)private String planetCode;/*** 用户昵称*/ExcelProperty(成员昵称)private String username;} 直接复制过来即可
这里需要说明一下ExcelProperty这个注解
ExcelProperty 注解是用来指定 Excel 文件中的某一列与 Java 对象中的成员变量之间的映射关系的
什么意思呢
先查看一下我们后面要操作的excel表格 就是将这两列映射到代码中对应的变量上
3第三步就是开始读取数据了
这里有两种方法
第一种是监听器
第二种是同步的读取
先介绍第一种
监听器
package com.usercenter.usercenterproject.once;import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.read.listener.ReadListener;
import lombok.extern.slf4j.Slf4j;// 有个很重要的点 DemoDataListener 不能被spring管理要每次读取excel都要new,然后里面用到spring可以构造方法传进去
Slf4j
public class TableListener implements ReadListenerXingQiuTableUserInfo {/*** 这个每一条数据解析都会来调用** param data one row value. Is is same as {link AnalysisContext#readRowHolder()}* param context*/Overridepublic void invoke(XingQiuTableUserInfo data, AnalysisContext context) {System.out.println(数据是data);}/*** 所有数据解析完成了 都会来调用** param context*/Overridepublic void doAfterAllAnalysed(AnalysisContext context) {System.out.println(已监听完成);}
}
还是到官网复制代码复制完之后重写invoke和doAfterAllAnalysed方法 开始读取
public class ImportExcel {public static void main(String[] args) {//Excel数据文件放在自己电脑上能够找到的路径String fileName D:\\User-Center-Code\\UserCenterProject\\src\\main\\resources\\testExcel.xlsx;readByListener(fileName);}private static void ReadByListener(String fileName){EasyExcel.read(fileName, XingQiuTableUserInfo.class, new TableListener()).sheet().doRead();}
}
文件名直接是excel的绝对路径 这一段也是去官网复制的自己需要稍作修改即可
第二种方法
同步读取
public class ImportExcel {public static void main(String[] args) {//Excel数据文件放在自己电脑上能够找到的路径String fileName D:\\User-Center-Code\\UserCenterProject\\src\\main\\resources\\testExcel.xlsx;
// readByListener(fileName);synchronousRead(fileName);}/*** 同步的返回不推荐使用如果数据量大会把数据放到内存里面*/public static void synchronousRead(String fileName) {// 这里 需要指定读用哪个class去读然后读取第一个sheet 同步读取会自动finishListXingQiuTableUserInfo list EasyExcel.read(fileName).head(XingQiuTableUserInfo.class).sheet().doReadSync();for (XingQiuTableUserInfo info : list) {System.out.println(info);}}
}
同步读取时不需要监听器的直接将所有数据同时读到内存中。 最后我们再对这两个方法进行比较一下 两种读取模式 监听器先创建监听器、在读取文件时绑定监听器。 单独抽离处理逻辑代码清晰易于维护一条一条处理适用于数据量大的场景。 同步读无需创建监听器一次性获取完整数据。 方便简单但是数据量大时会有等待时常也可能内存溢出。