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

乌鲁木齐网站建设哪家好免费招聘信息发布平台

乌鲁木齐网站建设哪家好,免费招聘信息发布平台,天津智能网站建设哪里有,房屋装修效果图卧室EasyExcel的简单使用 前言 Excel读 1.实体类 2.读监听器与测试类 3.输出结果 Excel写 1.实体类 2.写入Excel的测试类 3.输出结果 填充Excel 1.Excel模板 2.测试类 3.输出结果 前言 EasyExcel类是一套基于Java的开源Excel解析工具类,相较于传统的框架如Apache poi、…

EasyExcel的简单使用

前言
Excel读
1.实体类
2.读监听器与测试类
3.输出结果
Excel写
1.实体类
2.写入Excel的测试类
3.输出结果
填充Excel
1.Excel模板
2.测试类
3.输出结果
前言
EasyExcel类是一套基于Java的开源Excel解析工具类,相较于传统的框架如Apache poi、jxl等更加快速、简洁,还可以解决大文件内存溢出问题,即能让使用者在不用考虑性能、内存的等因素的情况下,快速完成Excel的读(导入)、写(导出)等功能。

版本支持:
2+版本支持Java7&Java6
3+版本支持Java8

这里使用的EasyExcel版本为3.1.1,JDK版本为1.8.0_161,同时辅助使用lombok和fastjson以简化代码或转化为Jason数据。
Maven依赖配置:

<dependencies><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.1.1</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId>		//非必要<version>1.16.10</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId>	//非必要<version>1.2.47</version></dependency>
</dependencies>

Excel读
样例内容:
在这里插入图片描述
1.实体类

import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class TextReadObject {@ExcelProperty(index = 0)private Integer studentId;@ExcelProperty(index = 1)private String studentName;@ExcelProperty(index = 2)private String institute;@ExcelProperty(index = 3)private Integer level_11;@ExcelProperty(index = 4)private Integer level_12;@ExcelProperty(index = 5)private Integer level_21;@ExcelProperty(index = 6)private Integer level_22;
}

其中注解@ExcelProperty可包含两个参数index和value,在简单表头(即表头只占用一行)中以下两条注解基本等价

@ExcelProperty(index = 0)
@ExcelProperty(value = “学号”)

而在复杂表头(即本例)中,需要使用index表示。
另外需要注意的是加入表头名字出现重复,会导致只有一个字段读取到数据,此外在读取操作时不建议index和value同时使用。综上所述,在已知excel表头内容的情况下使用参数index。

2.读监听器与测试类
四个监听器,这里使用前两个
在这里插入图片描述
AnalysisEventListener < T >
所有已实现的接口:Listener、ReadListener
直接已知子类:SyncReadListener
在这里插入图片描述

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import java.util.Map;
import java.util.List;
import lombok.AllArgsConstructor;@AllArgsConstructor
public class DemoDataListener extends AnalysisEventListener<TextReadObject> {private List<TextReadObject> dataList;//读取表头的内容@Overridepublic void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {System.out.println("表头->"+headMap);}//一行一行读取excel中的内容@Overridepublic void invoke(TextReadObject data, AnalysisContext context) {dataList.add(data);}//读取完成之后执行的方法@Overridepublic void doAfterAllAnalysed(AnalysisContext context) {}
}

读取Excel的测试类:

import com.alibaba.excel.EasyExcel;
import com.alibaba.fastjson.JSON;
import java.util.ArrayList;
import java.util.List;public class ExcelImport {public static void simpleRead() {String fileName = "F:\\rdtext.xls";List<TextReadObject> dataList = new ArrayList<>();//每次会读取100条数据然后返回过来,直接调用使用数据就行EasyExcel.read(fileName, TextReadObject.class, new DemoDataListener(dataList)).sheet(0)//读取第一个sheet.headRowNumber(3) //跳过前三行表头内容,假如是简单表头则这句可省略.doRead();//若需要实现读取全部sheet,可以使用.doReadAll()代替.sheet(0).doRead()for (TextReadObject dl : dataList) {System.out.println(JSON.toJSONString(dl));}}public static void main(String[] args) { simpleRead(); }
}

SyncReadListener:
所有已实现的接口:Listener、ReadListener
直接已知父类:AnalysisEventListener < T >

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.SyncReadListener;
import com.alibaba.fastjson.JSON;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;public class ExcelImportSync {public static void simpleRead() {String fileName = "F:\\text.xls";final List dataList = new ArrayList();EasyExcel.read(fileName, TextReadObject.class, new SyncReadListener() {@Overridepublic void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {System.out.println("表头->"+headMap);}@Overridepublic void invoke(Object object, AnalysisContext context) {dataList.add(object);}}).sheet(0).headRowNumber(3).doRead();for (Object o : dataList) {TextReadObject TOB = (TextReadObject) o;System.out.println(JSON.toJSONString(TOB));}}public static void main(String[] args) { simpleRead(); }
}

相较于AnalysisEventListener < T >,SyncReadListener更加适合对多种实体类实施相同操作的情况,在定义监听器时没有指定具体的实体类。

3.输出结果
二者输出结果一样:
在这里插入图片描述
Excel写
1.实体类

import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.ContentRowHeight;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import lombok.Data;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
@ColumnWidth(15) //列宽,最大值为255
@HeadRowHeight(16) //表头行高
@ContentRowHeight(16) //数据行高
public class TextWriteObject {//复杂表头自动合并相同的内容@ExcelProperty(index = 0, value = {"学号", "学号", "学号"})private Integer studentId;@ExcelProperty(index = 1, value = {"姓名", "姓名", "姓名"})private String studentName;@ColumnWidth(25)//单独设置列宽@ExcelProperty(index = 2, value = {"学院", "学院", "学院"})private String institute;//复杂表头嵌套@ExcelProperty(index = 3, value = {"成绩", "第一学年", "第一学期"})private Integer level_11;@ExcelProperty(index = 4, value = {"成绩", "第一学年", "第二学期"})private Integer level_12;@ExcelProperty(index = 5, value = {"成绩", "第二学年", "第一学期"})private Integer level_21;@ExcelProperty(index = 6, value = {"成绩", "第二学年", "第二学期"})private Integer level_22;
}

此时在注解@ExcelProperty中可以同时使用参数index和value,用于同时指定位置和内容。

其他未使用注解:
@ContentStyle用于设置内容格式
在这里插入图片描述
在这里插入图片描述
@ContentFontStyle用于设置单元格内容字体格式
在这里插入图片描述
在这里插入图片描述
@ExcelIgnore不将该字段转换成Excel

@ExcelIgnoreUnannotated没有注解的字段都不转换

2.写入Excel的测试类

import java.util.ArrayList;
import java.util.List;public class ExcelExport {public static void simpleWrite(){String fileName = "F:\\wttext.xls";List<TextWriteObject> dataList = new ArrayList<>();dataList.add(new TextWriteObject(2022101, "张三","生命科学院", 653, 602, 683, 707));dataList.add(new TextWriteObject(2022102, "李四","生命科学院", 568, 596, 611, 632));dataList.add(new TextWriteObject(2022103, "王五","生命科学院", 606, 673, 624, 653));dataList.add(new TextWriteObject(2022201, "赵六","语言文学院", 710, 722, 686, 703));EasyExcel.write(fileName, TextWriteObject.class).sheet(0).doWrite(dataList);}public static void main(String[] args) { simpleWrite(); }
}

3.输出结果
在这里插入图片描述
原文链接:https://blog.csdn.net/hermit_f/article/details/126850664
https://blog.csdn.net/hermit_f/article/details/126850664?spm=1001.2014.3001.5506

http://www.khdw.cn/news/27223.html

相关文章:

  • 网站制作 上海网络热线新媒体平台
  • 自己电脑做网站用备案河南企业网站推广
  • 世界著名办公室设计聊城优化seo
  • 重庆网站制作公司多少钱如何做电商
  • 网络推广网站怎么做刚刚中国突然宣布
  • 建网站用什么服务器好百度新闻头条
  • 宠物网站设计的代码推广普通话的手抄报
  • 做网站后台需要学什么专业搜索引擎seo服务
  • 天津手机网站建设制作如何找外链资源
  • 抚州南城网站建设seo排名优化是什么
  • 滨州做网站建设价格网站建设情况
  • 珠海市律师网站建设怎么样怎么知道网站有没有被收录
  • 网站备案拍照是什么扬州百度seo公司
  • 搭建网站论坛最好用的磁力搜索器
  • 广州b2b网站建设公司天津seo结算
  • 枣庄联通网站备案5118素材网站
  • 中国做的手机系统下载网站如何在互联网上做推广
  • 虚拟机安装 wordpress湖州网站seo
  • 垃圾网站怎么做的广州百度竞价开户
  • 沈阳做网站的北京seo推广服务
  • 网站建设与维护 东博东莞网站seo公司
  • 网站栏目页优化企业网搭建
  • 温州网站制作百度搜索量最大的关键词
  • 重庆微信网站开发公关键词搜索点击软件
  • 沈阳网站建设招标公司制作网站用什么软件
  • 网站建设中界面模板网站建设总结
  • 网站制作目的百度seo详解
  • 建设银行的网站查询密码深圳网站优化哪家好
  • 做网站单线程CPU和多线程cpuseo在线培训
  • 宿州市住房建设委员会网站开发网站的流程