最基础的内容,目标就是能用就行,其他还得大佬们自行研究api
<!--easyExcel表格工具-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.1.1</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.5</version>
</dependency>
//其他的注解依赖项
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
//其他均为SSM相关依赖
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
import java.io.Serializable;
@Data
public class City implements Serializable {
/**
* 市id;
*/
@ExcelProperty(index = 0, value="市id")
private String cityId;
/**
* 市;
*/
@ExcelProperty(index = 1, value="市")
private String city;
}
* 注:这里涉及到该工具的注解@ExcelProperty
* index指定了该属性在excel文件中的列数
* value制定了该属性在excel文件中的列的表头
List<City> getAllCity();//获取所有城市
* xml
<!-- List<City> getAllCity();//获取所有城市-->
<select id="getAllCity" resultType="cn.tedu.linli.entity.City">
select city_id AS cityId,city
from hat_city
</select>
@Component
@Slf4j
public class EasyExcelTool {
@Autowired
HatCityMapper cityMapper;
public List<City> getData(){
//获取所有城市
List<City> cities = cityMapper.getAllCity();
log.info(cities.toString());
return cities;
}
}
@Autowired
EasyExcelTool easyExcelTool;
@Test
public void test() {
//实现excel写操作
//设置写入文件夹的地址和文件名
String filePath = "D:/test.xlsx";
//调用EasyExcel里面的方法实现写的操作
EasyExcel.write(filePath, City.class).sheet("模板").doWrite(easyExcelTool.getData());
}
* 注:这里涉及的参数 filePath(文件路径),city.class 实体类的类对象,
doWrite的参数时Collection 集合,所以我使用getData进行集合的数据的获取
/**
* 监听器需要继承AnalysisEventListener<>,并重写其方法
*/
public class ExcelListener extends AnalysisEventListener<City> {
@Override
public void onException(Exception exception, AnalysisContext context) throws Exception {
super.onException(exception, context);
}
/**
* 一行一行的读取excel内容
* @param city
* @param analysisContext
*/
@Override
public void invoke(City city, AnalysisContext analysisContext) {
System.out.println(city);//在这里可以进行自己想进行的其他操作
}
@Override
public void extra(CellExtra extra, AnalysisContext context) {
super.extra(extra, context);
}
/**
* 读取完成后操作
* @param analysisContext
*/
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
System.out.println("读取完成");
}
@Override
public boolean hasNext(AnalysisContext context) {
return super.hasNext(context);
}
}
@Test
public void testRead(){
//实现excel写操作
//设置写入的文件位置
String filePath = "D:/test.xlsx";
//调用easyExcel里面的方法实现写操作
//3个参数,第一个参数是文件名,第二个参数是实体类,第三个是传入我们写好的监听器对象
EasyExcel.read(filePath,City.class,new ExcelListener()).sheet().doRead();
}
package cn.tedu.linli.entity;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.math.BigDecimal;
import java.util.Objects;
/**
* table name: hat_area
* author name: 何某人
* create time: 2022-06-07 07:35:54
*/
@Data
public class HatArea implements Serializable{
private Long id;
/**
* 地区id;
*/
private String areaId;
/**
* 县区;
*/
private String area;
/**
* 上一级;
*/
private String father;
/**
* 修改时间
*/
private LocalDateTime gmtModified;
/**
* 创建时间
*/
private LocalDateTime gmtCreate;
int add(HatArea area);//添加区域
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--此文件必须使用mapper作为根级节点, 根级节点有且只有一个-->
<!--namespace 属性: 必须的,用于指定此XML文件对应的接口,取值为接口的全限定名-->
<mapper namespace="cn.tedu.linli.mapper.HatAreaMapper">
<!--增-->
<!-- int add(HatArea area);//添加区域-->
<insert id="add" useGeneratedKeys="true" keyProperty="id">
insert into hat_area(id,
area_id,
area,
father)
values (#{id}, #{areaId}, #{area}, #{father})
</insert>
</mapper>
package cn.tedu.linli.util;
import cn.tedu.linli.entity.HatArea;
import cn.tedu.linli.mapper.HatAreaMapper;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.excel.metadata.CellExtra;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Slf4j
@Component
public class ExcelListenerForArea extends AnalysisEventListener<HatArea> {
@Autowired
HatAreaMapper hatAreaMapper;
@Override
public void onException(Exception exception, AnalysisContext context) throws Exception {
super.onException(exception, context);
}
@Override
public void invoke(HatArea data, AnalysisContext context) {
hatAreaMapper.add(data);
log.info("添加区域id:{}", data.getId());
}
@Override
public void extra(CellExtra extra, AnalysisContext context) {
super.extra(extra, context);
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
System.out.println("添加完成");
}
@Override
public boolean hasNext(AnalysisContext context) {
return super.hasNext(context);
}
}
@Autowired
ExcelListenerForArea excelListenerForArea;
@Test
public void testReadArea(){
String filePath = "D:/hat_area.xlsx";//本地文件位置
EasyExcel.read(filePath, HatArea.class,excelListenerForArea).sheet().doRead();
}