package jnpf.personnels.utils;

import com.alibaba.excel.annotation.ExcelProperty;

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;

/**
 * Excel头部信息工具类
 *
 * @author
 * @since 2025-01-01
 */
public class ExcelHeaderUtil {


    /**
     * 获取类中所有带有@ExcelProperty注解的字段名称，组成列表
     *
     * @param clazz Excel实体类的Class对象
     * @return 包含@ExcelProperty注解value的列表
     */
    public static <T> List<List<String>> getExcelHeaderList(Class<T> clazz) {
        List<List<String>> headersList = new ArrayList<>();
        // 获取所有声明的字段，包括私有字段
        Field[] fields = clazz.getDeclaredFields();

        for (Field field : fields) {
            List<String> headers = new ArrayList<>();
            // 检查字段是否带有ExcelProperty注解
            if (field.isAnnotationPresent(ExcelProperty.class)) {
                ExcelProperty excelProperty = field.getAnnotation(ExcelProperty.class);
                // 获取注解中的value值
                String[] values = excelProperty.value();
                if (values.length > 0) {
                    headers.add(values[0]); // 取第一个值作为标题
                    headersList.add(headers);
                }
            }
        }
        
        return headersList;
    }
}