com.alibaba
easyexcel
2.2.6
public class Test {
public static void main(String[] args) {
//读取文件
//创建ExcelReaderBuilder实例
ExcelReaderBuilder readerBuilder = EasyExcel.read();
//获取文件对象
readerBuilder.file("D:\\java\\用户数据表.xls");
//指定sheet
readerBuilder.sheet("用户数据表");
//自动关闭输入流
readerBuilder.autoCloseStream(true);
//设置Excel文件格式
readerBuilder.excelType(ExcelTypeEnum.XLS);
//注册监听器进行数据的解析
readerBuilder.registerReadListener(new AnalysisEventListener
public class ExcelTest {
public static void main(String[] args) {
List
@TableName("card_info")
@Data
@AllArgsConstructor
@NoArgsConstructor
@HeadStyle(horizontalAlignment = HorizontalAlignment.CENTER,verticalAlignment = VerticalAlignment.CENTER, shrinkToFit = true)//标题样式,垂直水平居中
@HeadFontStyle(fontName = "微软雅黑",fontHeightInPoints = 11,bold = false)//表头字体样式
@HeadRowHeight(value = 35)//表头行高
@ContentFontStyle(fontName = "微软雅黑",fontHeightInPoints = 11)//内容字体样式
@ContentRowHeight(value = 30)//内容行高
@ContentStyle(horizontalAlignment = HorizontalAlignment.CENTER,verticalAlignment = VerticalAlignment.CENTER, wrapped = true)//内容样式,垂直水平居中
public class CardInfo implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
@ExcelIgnore
private Long id;
/**
* 卡片id
*/
@ExcelProperty("cardId")
private String cardId;
/**
* 真实姓名
*/
@ExcelProperty("name")
private String name;
/**
* 年龄
*/
@ExcelProperty("age")
private Integer age;
/**
* 职业
*/
@ExcelProperty("occupation")
private String occupation;
/**
* 电话号码
*/
@ExcelProperty("phone")
private String phone;
/**
* 地址
*/
@ExcelProperty("address")
private String address;
/**
* 邮箱
*/
@ExcelProperty("email")
private String email;
/**
* 公司
*/
@ExcelProperty("company")
private String company;
/**
* 0:未删除1:逻辑删除2:真正删除
*/
@ExcelIgnore
private Integer delFlag;
/**
* 用户id(不是必要)
*/
@ExcelProperty("userId")
private String userId;
/**
* 名片曝光率
*/
/**不显示字段注解*/
@ExcelIgnore
private Long exposureValue;
/**
* 标签集合
*/
@TableField(value="tag_list",typeHandler = FastjsonTypeHandler.class)
@ExcelProperty("tagList")
private String tagList;
/**
* 名片用户的简介
*/
@ExcelProperty("personalProfile")
private String personalProfile;
}
@HeadStyle / @ContentStyle 设置标题 / 内容样式
@HeadFontStyle 定制标题字体格式
@ContentRowHeight 设置行高
@ColumnWith 设置列宽 , 作用于成员属性
@ExcelIgnore 不将该字段转换成Excel
@ExcelProperty("xxx")指定列名的映射
public class ExcelTest {
public static void main(String[] args) {
List list = new LinkedList<>();
EasyExcel.read("D:\\java\\用户数据表.xls")
.head(ExcelData.class)
.sheet()
.registerReadListener(new AnalysisEventListener() {
@Override
public void invoke(ExcelData excelData, AnalysisContext analysisContext) {
list.add(excelData);
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
System.out.println("数据读取完毕");
}
}).doRead();
for (ExcelData excelData : list) {
System.out.println(excelData);
}
}
}
public class ExcelTest {
public static void main(String[] args) {
List list = parseData();
//list写入Excel文件
EasyExcel.write("D:\\java\\用户数据表_副本.xls")
.head(ExcelData.class)
.excelType(ExcelTypeEnum.XLS)
.sheet("用户数据表")
.doWrite(list);
}
public static List parseData(){
List list = new LinkedList<>();
// 写的数据都封装进list中
return list;
}
}
其实这些都是可以直接CV的,在映射封装类上以及输入输出位置上自定义就好
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.excel.support.ExcelTypeEnum;
import org.apache.poi.ss.formula.functions.T;
import java.util.LinkedList;
import java.util.List;
/**
* @author wzx
*/
public class ExcelUtil {
/**
* 封装Excel中的数据到指定的实体类中
* @param typeClass 指定的实体类的字节码类别
* @param readPath Excel的文件路径
* @return 指定的实体类对象的集合(每个对象代表每一条数据)
*/
public static List getDataFromExcel(Class typeClass , String readPath){
List list = new LinkedList<>();
EasyExcel.read(readPath)
.head(typeClass)
.sheet()
.registerReadListener(new AnalysisEventListener() {
@Override
public void invoke(T excelData, AnalysisContext analysisContext) {
list.add(excelData);
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
System.out.println("数据读取完毕");
}
}).doRead();
return list;
}
/**
* 将封装好的数据写入Excel中
* @param list 写入的数据集合
* @param writePath 写入的Excel文件的路径
* @param sheet excel表中生成的sheet表名
* @param excelType 插入的excel的类别,有xls、xlsx两种
*/
public static void saveDataToExcel(List list, String writePath, String sheet, ExcelTypeEnum excelType, Class clazz) {
// 写入Excel文件
EasyExcel.write(writePath)
.head(clazz)
.excelType(excelType)
.sheet(sheet)
.doWrite(list);
}
}