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

Java中处理表格

大家好 , 我是苏麟 , 也是很久没有更新了 , 今天带来一个很好使用的一个库 easyexcel.

JAVA后端开发中可能会遇到一个问题 , 就是处理Execel表格 , 当然不一定非要用Java 我们在这里只说在Java里怎么去处理表格 . 

Easy Excel

 我们今天要说到就是 Easy Excel , 这个是阿里的项目

官方文档连接   :   https://easyexcel.opensource.alibaba.com/

可直接点    :   EasyExcel官方文档 - 基于Java的Excel处理工具 | Easy Excel (alibaba.com)

 

引入依赖

        <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.1.0</version></dependency>

下面开始读Excel 

两种方式 :

第一种最简单方式

Demo :  例如我们有一个表格

 第一步在Java中创建一个类 , 每一个标题对应一个字段

@Data
public class ExcelDemo {/*** 用户编号*/@ExcelProperty("用户编号")private String userId;/*** 用户姓名*/@ExcelProperty("用户姓名")private String username;}

第二步准备一个读取数据的类

/*** 用户*/
public class UserImportExcel {public static void main(String[] args) {//获取Excel的绝对路径String fileName = "T:\\projrct\\src\\main\\java\\com\\sl\\ExcelOnce\\sll.xlsx";//打印数据userList.forEach(System.out::println);//读取数据List<ExcelDemo> userList = EasyExcelFactory.read(fileName).head(ExcelDemo.class).sheet().doReadSync();//过滤掉重复数据Map<String, List<ExcelDemo>> collectList =userList.stream().filter(suer -> StringUtils.isNotEmpty(suer.getUsername())).collect(Collectors.groupingBy(ExcelDemo::getUsername));System.out.println("不重复数据数量是 : " + collectList.keySet().size());}
}

运行结果

 第二种方式 : 监听器

第一步在Java中创建一个类

@Data
public class ExcelDemo {/*** 用户编号*/@ExcelProperty("用户编号")private String userId;/*** 用户姓名*/@ExcelProperty("用户姓名")private String username;}

第二步准备一个监听器

@Slf4j
public class ExcelDemoListener implements ReadListener<ExcelDemo> {/*** 这个每一条数据解析都会来调用** @param data    one row value. Is is same as {@link AnalysisContext#readRowHolder()}* @param context*/@Overridepublic void invoke(ExcelDemo data, AnalysisContext context) {System.out.println(data);}/*** 所有数据解析完成了 都会来调用** @param context*/@Overridepublic void doAfterAllAnalysed(AnalysisContext context) {// 这里也要保存数据,确保最后遗留的数据也存储到数据库System.out.println("数据处理完成");}}

第三步准备实现的类

public class ImportExcel {public static void main(String[] args) {//获取Excel的路径String fileName = "T:\\projrct\\src\\main\\java\\com\\sl\\ExcelOnce\\sll.xlsx";/***    方法1.监听器*   优点: 清晰便于维护*   缺点:要写监听器 , 一次只能处理一条数据*/readByListener(fileName);}/*** 通过监听器的方法来读取数据** @param fileName*/public static void readByListener(String fileName) {//读取数据EasyExcelFactory.read(fileName, ExcelDemo.class, new ExcelDemoListener()).sheet().doRead();}}

结果是一样的

读取表格还是很简单的 , 学会读取表格之后写入表格就更简单了

写入表格

准备一个和表格字段一样的类

@Data
public class ExcelDemo {/*** 用户编号*/@ExcelProperty("用户编号")private String userId;/*** 用户姓名*/@ExcelProperty("用户姓名")private String username;}

准备一个写入表格的类

public class UserImportExcel {public static void main(String[] args) {// 已读取和处理后的数据列表List<YupiWriteData> dataList = userList;//Excel表的名称String fileName = "sll.xlsx";EasyExcel.write(fileName, ExcelDemo.class).sheet("数据表").doWrite(dataList);}}
}

这里会把原来的数据覆盖掉......

当然也有许多好用的处理Excel表格的库 例如 :  apache poi , easypoi ......

如果想了解更多 , 请看官网文档 , 会给您带来一种新的感受......

拜拜 , 期待下一次的见面!

http://www.lryc.cn/news/127906.html

相关文章:

  • 指静脉开集测试(OpenSet-test)代码(包含7个数据集)
  • okcc对接ASR平台,okcc客户投诉的安全问题
  • JVM中判定对象是否回收的的方法
  • macos 使用vscode 开发python 爬虫(开发二)
  • (已解决)redis.get报错com.alibaba.fastjson.JSONException: autoType is not support
  • 控价可以这样做
  • Spring学习笔记之Spring IoC注解式开发
  • C语言入门教程,C语言学习教程(非常详细)第二章 c语言初探
  • HOT99-下一个排列
  • JAVA基础知识(二)——程序流程控制
  • mysql知识点+面试总结
  • 前端大屏常用的适配方案
  • 技术债 笔记
  • 【Leetcode】102.二叉树的层序遍历
  • 上传文件报413Request EntityToo Large错误解决办法
  • Neo4j之MERGE基础
  • AbstractRoutingDataSource,spring配置多数据源问题
  • 日常BUG—— SpringBoot项目DEBUG模式启动慢、卡死。
  • Linux网络编程(TCP状态转换关系)
  • tauri-vue:快速开发跨平台软件的架子,支持自定义头部UI拖拽移动和窗口阴影效果
  • 做好以下几点,可以让我们延长周末体验感,好好放松!!!
  • Python 学习笔记——代码基础
  • Android Studio 无法正常导入项目
  • Grafana+Prometheus技术文档-进阶使用-监控spring-boot项目
  • PG常用SQL
  • 分模块开发的意义及开发步骤
  • vue-router中的一些 API
  • go-zero 是如何实现令牌桶限流的?
  • Oracle/PL/SQL奇技淫巧之ROWNUM伪列
  • “MongoDB基础知识【超详细】