自定义导出 - wujiuye/miniexcel GitHub Wiki

导出列指示器

适应场景:

  1. 使用同一个java类,在不同的业务下导出不同的标题,那么可以在@ExcelCellTitle注解的基础上,动态的修改@ExcelCellTitle注解指定的列名;
  2. 使用同一个java类,在不同的业务下忽略掉一些列;

导出列指示器也可以在不使用@ExcelCellTitle注解的情况下,设置导出忽略的字段,设置字段对应导excel的列标题。

/**
 * @author wujiuye
 * @version 1.0 on 2019/10/10 {描述:
 * 列指示器
 * }
 */
public interface ColumnsDesignator {

    /**
     * 是否忽略该列
     * 一般使用注解,除非有特殊需求
     *
     * @param column data的数据类型的字段名
     * @return
     */
    boolean isIgnore(String column);

    /**
     * 是否需要重命名
     * 一般使用注解,除非有特殊需求
     *
     * @param fieldName         data的数据类型的字段名
     * @param currentColumnName 当前使用的列名,也就是从注解上面获取的,如果注解没有配置,则等于字段名
     * @return 不需要重命名则直接返回参数currentColumnName,需要重命名则返回重命名后的列名(excel文件的标题名称)
     */
    String renameColumn(String fieldName, String currentColumnName);

}

使用案例:

public class DataExportTest{
    @Test
    public void testExportCD() {
        AbstractExcelWriter excelWriter = AbstractExcelWriter.createExcelWriter(System.out, ExcelFileType.XLSX);
        excelWriter.setSheetSize(1000)
                .setBrushPageSize(1000)
                .setSheetNameFromat("Sheet{sn}");
        // 指定忽略哪些列
        Set<String> ignoreColumn = new HashSet<>();
        excelWriter.write(new ExcelWriteListenerAdapter<DateModel>(DateModel.getTestData(), 1000) {
        }, new ColumnsDesignator() {

            @Override
            public boolean isIgnore(String column) {
                if (CollectionUtils.isEmpty(ignoreColumn)) {
                    return false;
                }
                // 返回true即为忽略。
                //  相反的,如果只相导出某些列,则可以改为: return !ignoreColumn.contains(column);
                return ignoreColumn.contains(column);
            }
 
            // 第二个参数:如果字段上没有注解,该值为字段名;如果字段上有注解,则是注解指定的列名(有声明的情况下);
            @Override
            public String renameColumn(String fieldName, String currentColumnName) {
                // 将列名“SPU商品ID“替换为”SKU商品ID“
                if (currentColumnName.equalsIgnoreCase("SPU商品ID")) {
                    return "SKU商品ID";
                }
                return currentColumnName;
            }
        });
    }
}
⚠️ **GitHub.com Fallback** ⚠️