当前位置:网站首页>EasyExcel的讀寫操作
EasyExcel的讀寫操作
2022-07-05 21:05:00 【letg】
一、寫操作
1.1 實體類
讀操作添加 @ExcelProperty注解,並且value值為excel的錶頭名稱
@Data
public class User {
@ExcelProperty(value = "用戶編號",index = 0)
private int id;
@ExcelProperty(value = "用戶名稱",index = 1)
private String name;
}
1.2 測試寫操作
public class TestWrite {
public static void main(String[] args) {
String fileName = "C:\\data\\hzxy.xlsx";
EasyExcel.write(fileName,User.class)
.sheet("寫操作")
.doWrite(data());
}
}
private static List<User> data(){
ArrayList<User> list = new ArrayList<>();
for (int i = 0; i < 10; i++) {
User user = new User();
user.setId(i);
user.setName("張三"+i);
list.add(user);
}
return list;
}
}
二、寫操作(寫操作需要繼承一個監聽器,進行一行一行讀取)
2.1 監聽器
invoke方法會進行excel一行一行讀取,只會從第二行讀取,第一行為錶頭
public class ExcelListener extends AnalysisEventListener<User> {
//一行一行讀取excel的內容,把每行內容封裝
//第一行不讀,因為第一行為錶頭
@Override
public void invoke(User user, AnalysisContext analysisContext) {
System.out.println(user);
}
//錶頭是從該方法讀取
@Override
public void invokeHead(Map<Integer, CellData> headMap, AnalysisContext context) {
System.out.println("錶頭:"+headMap);
super.invokeHead(headMap, context);
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
}
}
2.2 測試代碼
public class TestWrite {
public static void main(String[] args) {
String fileName = "C:\\data\\hzxy.xlsx";
// EasyExcel.write(fileName,User.class)
// .sheet("寫操作")
// .doWrite(data());
EasyExcel.read(fileName,User.class,new ExcelListener())
.sheet("讀操作")
.doRead();
}
三、實現
3.1 導出
public void exportData(HttpServletResponse response) {
try {
//設置下載信息
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
String fileName = URLEncoder.encode("課程分類","UTF-8");
response.setHeader("Content-disposition","attachment;filename="+fileName+".xlsx");
//查詢所有課程數據
List<Subject> subjectList = baseMapper.selectList(null);
List<SubjectEeVo> subjectEeVos = new ArrayList<>();
for (Subject subject : subjectList) {
SubjectEeVo subjectEeVo = new SubjectEeVo();
BeanUtils.copyProperties(subject,subjectEeVo);
subjectEeVos.add(subjectEeVo);
}
EasyExcel.write(response.getOutputStream(), SubjectEeVo.class)
.sheet("課程分類")
.doWrite(subjectEeVos);
} catch (Exception e) {
e.printStackTrace();
}
}
3.2 導入
@Override
public void importData(MultipartFile file) {
try {
EasyExcel.read(file.getInputStream(),SubjectEeVo.class,subjectListener)
.sheet()
.doRead();
} catch (IOException e) {
throw new GgktException(20001,"導入失敗");
}
}
@Component
public class SubjectListener extends AnalysisEventListener<SubjectEeVo> {
@Autowired
private SubjectMapper subjectMapper;
@Override
public void invoke(SubjectEeVo subjectEeVo, AnalysisContext analysisContext) {
Subject subject = new Subject();
BeanUtils.copyProperties(subjectEeVo,subject);
subjectMapper.insert(subject);
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
}
}
边栏推荐
- Material design component - use bottomsheet to show extended content (II)
- Introduction of ArcGIS grid resampling method
- 显示器要申请BS 476-7 怎么送样?跟显示屏一样吗??
- PHP deserialization +md5 collision
- Wood board ISO 5660-1 heat release rate mapping test
- 基于flask写一个接口
- Prior knowledge of machine learning in probability theory (Part 1)
- 10000+ 代码库、3000+ 研发人员大型保险集团的研发效能提升实践
- AITM 2-0003 水平燃烧试验
- leetcode:1139. The largest square bounded by 1
猜你喜欢
MySQL deep paging optimization with tens of millions of data, and online failure is rejected!
使用WebAssembly在浏览器端操作Excel
Add ICO icon to clion MinGW compiled EXE file
研學旅遊實踐教育的開展助力文旅產業發展
Learning robots have no way to start? Let me show you the current hot research directions of robots
实现浏览页面时校验用户是否已经完成登录的功能
Clion configures Visual Studio (MSVC) and JOM multi-core compilation
基于vertx-web-sstore-redis的改造实现vertx http应用的分布式session
珍爱网微服务底层框架演进从开源组件封装到自研
10000+ 代码库、3000+ 研发人员大型保险集团的研发效能提升实践
随机推荐
MYSQL IFNULL使用功能
SQL series (basic) - Chapter 2 limiting and sorting data
hdu2377Bus Pass(构建更复杂的图+spfa)
ArcGIS栅格重采样方法介绍
浅聊我和一些编程语言的缘分
珍爱网微服务底层框架演进从开源组件封装到自研
leetcode:1139. The largest square bounded by 1
EN 438-7建筑覆盖物装饰用层压板材产品—CE认证
2.<tag-哈希表, 字符串>补充: 剑指 Offer 50. 第一个只出现一次的字符 dbc
判断横竖屏的最佳实现
postgres 建立连接并删除记录
Écrire une interface basée sur flask
基于 Ingress Controller 在集群外访问 Zadig 自测环境(最佳实践)
2. < tag hash table, string> supplement: Sword finger offer 50 The first character DBC that appears only once
五层网络协议
Which securities company is better and which platform is safer for stock account opening
研學旅遊實踐教育的開展助力文旅產業發展
Clear app data and get Icon
Interpreting the daily application functions of cooperative robots
Which is the best online collaboration product? Microsoft loop, notion, flowus