在工作中,我们经常会遇到一些奇葩的excel格式,例如竖标题的excel

这个时候我们如果用easyExcel处理有点麻烦,所以我就自己写了一个用poi处理的工具类
首选我们定义一个自定义注解
import org.apache.commons.lang3.StringUtils;
import java.lang.annotation.*;
/**
* 指定读取的行和列
* @date 2022-11-07
*/
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RecordTemplate {
/**
* 行号
*/
int rowNo();
/**
* 列号
*/
int columnNo();
/**
* 字段名称
*/
String name() default StringUtils.EMPTY;
}
用法:用在字段属性上

具体的处理
/**
* 解析excel备案数据到对象
* 这里也可以反射直接给对象赋值 field.setAccessible(true);
*/
public static Object parseExcelToModel(Sheet sheet,Class> dataClass) {
Field[] declaredFields = dataClass.getDeclaredFields();
//获取excel的流,前端传入
HashMap
/**
* 根据坐标读取excel的值
* @param sheet excel
* @param rowNo 行数
* @param columnNo 列数
* @return 单元格内的值 (String)
*/
private static String readCell(Sheet sheet,int rowNo, int columnNo){
int lastRowNum = sheet.getLastRowNum();
if (rowNo > lastRowNum){
return null;
}
//获取行
Row row = sheet.getRow(rowNo);
//获取该行的第2列的单元格
Cell cell = row.getCell(columnNo);
//设置单元格类型
DataFormatter dataFormatter = new DataFormatter();
return dataFormatter.formatCellValue(cell);
}