当前位置: 首页 > news >正文

EASYEXCEL(一)

1.读取excel

读监听器


@Slf4j
public class StudentReadListener extends AnalysisEventListener<Student> {// 每读一样,会调用该invoke方法一次@Overridepublic void invoke(Student data, AnalysisContext context) {System.out.println("data = " + data);log.info(data + "保存成功");}// 全部读完之后,会调用该方法@Overridepublic void doAfterAllAnalysed(AnalysisContext context) {// TODO......}
}

映射实体类


@Data
@AllArgsConstructor
@NoArgsConstructor
@ColumnWidth(20)
@ToString
public class Student {/*** id*/@ExcelProperty(value = "编号",index = 0)//@ExcelIgnoreprivate String id;/*** 学生姓名*/@ExcelProperty(value = "学生姓名", index = 1)//@ColumnWidth(30)private String name;/*** 学生性别*/@ExcelProperty(value = "学生性别", index = 2)private String gender;/*** 学生出生日期*/@ExcelProperty(value = "学生出生日期", index = 3)//@ColumnWidth(20)private Date birthday;

 读取

public class StudentReadDemo {public static void main(String[] args) throws FileNotFoundException {// 读取文件,读取完之后会自动关闭/*pathName        文件路径;"C:\\Users\\wjg\\Desktop\\学员信息.xlsx"head            每行数据对应的实体;Student.classreadListener    读监听器,每读一样就会调用一次该监听器的invoke方法sheet方法参数: 工作表的顺序号(从0开始)或者工作表的名字,不传默认为0*/// 封装工作簿对象ExcelReaderBuilder workBook = EasyExcel.read("C:\\Users\\wjg\\Desktop\\学员信息.xlsx", Student.class, new StudentReadListener());// 封装工作表ExcelReaderSheetBuilder sheet1 = workBook.sheet();// 读取sheet1.doRead();}

2.写入excel

public class StudentWriteDemo {public static void main(String[] args) {List<Student> students = initData();/*String pathName 写入文件的路径Class head      写入文件的对象类型默认写入到07的xlsx中,如果想要写入xls,可以指定类型(待验证)*/ExcelWriterBuilder workBook = EasyExcel.write("C:\\Users\\wjg\\Desktop\\学员信息.xlsx", Student.class);// sheet方法参数: 工作表的顺序号(从0开始)或者工作表的名字workBook.sheet().doWrite(students);}private static List<Student> initData() {ArrayList<Student> students = new ArrayList<Student>();Student data = new Student();for (int i = 0; i < 10; i++) {data.setName("学号0" + i);data.setBirthday(new Date());data.setGender("男");data.setId(String.valueOf(i));students.add(data);}return students;}
}

相关文章:

  • 如何设计鞋材出库入账管理系统
  • 【rosrun diagnostic_analysis】报错No module named rospkg | ubuntu 20.04
  • 达索系统3DEXPERIENCE云端设计新体验
  • 怎么判断list是否为null
  • 2023年国自然植物科学相关面上项目信息公布(小麦、大麦、棉花、大豆、玉米)
  • 前端字符串方法汇总
  • 我叫:选择排序【JAVA】
  • 【JVM】JVM异常不打印堆栈信息 [ -XX:-OmitStackTraceInFastThrow ]
  • 动态规划求数组中相邻两数的最小差值( 即相差的绝对值 ) java 实现
  • 汽车托运汽车会产生公里数吗?
  • 如何把A3 pdf 文章打印成A4
  • 腾讯云COS+picgo+typora 图床搭建与自动上传
  • 常见几种排序算法
  • 【数据结构-零基础学习】线索二叉树(代码+图示+解析)
  • 【0236】聊一聊PG内核中的命令标签(Command Tags、CommandTag、tag_behavior)
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • 3.7、@ResponseBody 和 @RestController
  • android 一些 utils
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • Elasticsearch 参考指南(升级前重新索引)
  • ES6系列(二)变量的解构赋值
  • maya建模与骨骼动画快速实现人工鱼
  • Shell编程
  • SwizzleMethod 黑魔法
  • yii2权限控制rbac之rule详细讲解
  • 阿里云应用高可用服务公测发布
  • 动态魔术使用DBMS_SQL
  • 技术:超级实用的电脑小技巧
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 前端相关框架总和
  • 日剧·日综资源集合(建议收藏)
  • 通过npm或yarn自动生成vue组件
  • 一道面试题引发的“血案”
  • 移动端 h5开发相关内容总结(三)
  • #在 README.md 中生成项目目录结构
  • $jQuery 重写Alert样式方法
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (2)STL算法之元素计数
  • (4)Elastix图像配准:3D图像
  • (5)STL算法之复制
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (第二周)效能测试
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (算法)前K大的和
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .NET delegate 委托 、 Event 事件,接口回调
  • .NET/C# 使窗口永不激活(No Activate 永不获得焦点)
  • .NET8.0 AOT 经验分享 FreeSql/FreeRedis/FreeScheduler 均已通过测试
  • .NET命名规范和开发约定
  • .net中应用SQL缓存(实例使用)
  • .sh文件怎么运行_创建优化的Go镜像文件以及踩过的坑