Algunos usos de [EasyExcel]

1. Clase de escucha AnalysisEventListener, que se puede utilizar para analizar Excel

Se utiliza para el monitoreo y, por un lado, puede manejar algunas tareas de detección de datos, como verificar si hay datos vacíos y si hay datos duplicados. Por otro lado, también se puede realizar el almacenamiento de datos. Si el almacenamiento de datos se realiza aquí, la conversión de datos también se puede completar aquí.

En este oyente, los datos analizados, la información del encabezado y la información de la operación realizada después de completar el análisis se obtienen anulando el método AnalysisEventListener.

public class ExcelListener extends AnalysisEventListener<UserData> {
    
    

 /**
  * 一行一行的读取excel内容
  */
 public void invoke(UserData data, AnalysisContext analysisContext) {
    
    
  System.out.println("****" + data);
 }

 /**
  * 读取表头内容
  */
 public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
    
    
  System.out.println("表头" + headMap);
 }

 /**
  * 读取完成操作
  */
 public void doAfterAllAnalysed(AnalysisContext analysisContext) {
    
    
  System.out.println("读取Excel完毕");
 }
}

transferir:

public class EasyExcelReadDemo {
    
    

 public static void main(String[] args) {
    
    
  // 实现excel写操作
  //1.设置写入文件夹地址和excel文件名称
  String fileName = "/Users/zzs/temp/excel/write.xlsx";
  //调用easyExcel里面的方法实现写操作
  //2个参数,第一个参数是文件名称,第二个参数是实体类
  EasyExcel.read(fileName, UserData.class, new ExcelListener()).sheet().doRead();
 }
}

2. Convertidor personalizado

A través de un convertidor personalizado, por ejemplo, convierta 1 y 0 en instancias masculinas y femeninas:

public class SexConverter implements Converter<Integer> {
    
    

    public Class<Integer> supportJavaTypeKey() {
    
    
        return Integer.class;
    }

    public CellDataTypeEnum supportExcelTypeKey() {
    
    
        return CellDataTypeEnum.STRING;
    }

    public Integer convertToJavaData(CellData cellData, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
    
    
        return "男".equals(cellData.getStringValue()) ? 1 : 0;
    }

    public CellData<String> convertToExcelData(Integer integer, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
    
    
        return new CellData<>(integer.equals(1) ? "男" : "女");
    }
}

usar:

@ExcelProperty(value="性别",converter = SexConverter.class)
private Integer sex;

Genere Excel nuevamente y el contenido del campo de género se mostrará como: masculino y femenino.

3. Mantenga dos decimales

Por ejemplo, el peso debe mantenerse en dos decimales, lo que se puede lograr mediante la anotación @NumberFormat:

@ExcelProperty(value = "体重KG")
@NumberFormat("0.##") // 会以字符串形式生成单元格,要计算的列不推荐
private BigDecimal weight;

Otro método es utilizar la anotación @ContentStyle: esto también puede lograr el efecto de conservar dos decimales.
Por supuesto, también se puede implementar implementando la interfaz Converter (implementación del mismo género).

@ContentStyle(dataFormat = 2)
private BigDecimal weight2;

4. Excluir columnas de Excel especificadas

En muchos escenarios, las columnas de Excel y las clases de entidad pueden no ser completamente consistentes, en cuyo caso es necesario excluir algunos campos de la clase de entidad.
Método 1: agregar la anotación @ExcelIgnoreUnannotated a la clase y filtrar los campos cuyas propiedades no están anotadas con @ExcelProperty

@Data
@ToString
@AllArgsConstructor
@NoArgsConstructor  // 一定要有无参构造方法
@ExcelIgnoreUnannotated
public class UserData {
    
    
    .....
}

Método 2: agregar la anotación @ExcelIgnore al campo especificado

@ExcelIgnore // 该字段不生成excel
private String remark;

Método 3: El código especifica el campo de filtro mediante el método excluirColumnFiledNames. La ventaja de este método es que el mismo Excel puede excluir diferentes columnas de datos al llamar al método.

EasyExcel.write(fileName, UserData.class).sheet("学生信息表").excludeColumnFiledNames(Arrays.asList("remark")).doWrite(getData());

Enlace de referencia: https://jsnds.cn/2021/07/29/104400.html

Supongo que te gusta

Origin blog.csdn.net/m0_46459413/article/details/128659592
Recomendado
Clasificación