使用poi进行excel导入导出纠结了

最近在使用poi做一个excel导入导出的功能,也看了不少例子,但是发现都是基于一张表进行的处理,也就是excel的导入导出操作的工具类或者是接口中都有导出后表头标题的定义,例如,数据库里有一列叫Name,在工具类中使用了setCellValue("名字")直接给定了导出列的标题,这样的话万一我有好多张表都需要做excel的导入导出操作的话,岂不是每个表都要建立一个工具类了,大家有没有比较好的方法能够做一个通用工具类或者接口,或者是说有看到过这样写的文章,分享学习一下

// 创建第一行
XSSFRow row1 = sheet.createRow(0);
// 创建第一行第一列
XSSFCell row1Cell1 = row1.createCell(0);
row1Cell1.setCellValue("基本信息");
row1Cell1.setCellStyle(titleStyle);

// 创建第一行第二列
XSSFCell row1Cell2 = row1.createCell(3);
row1Cell2.setCellValue("证件信息");
row1Cell2.setCellStyle(titleStyle);

若依框架中这个POI可以看看,应该可以满足你说的通用导出,只需要加个注解就好,代码网上就有

我看CSDN这个博文中的工具类应该能解决你的问题,只需要将 列 和 值 作为参数传入 writeExcel 就行,是一个通用的工具类。

https://blog.csdn.net/bourbon_zero/article/details/108347075

一个基于注解式的工具包  自己整理的 希望能帮得到你  https://juejin.cn/post/6899739087066890247

根据实体类的注解 可以自动校验excel数据 

@Data
public class ProjectVo {

    @FieldName(value = "项目")
    private String name;

    @FieldName(value = "电话")
    private String phone;

    @FieldName(value = "联系人")
    private String person;

    @FieldName(value = "金额")
    private Double money;

    @FieldName(value = "负责人" ,required = true)
    private String processPeople;

    @FieldName(value = "周期")
    private String cycle;

    @FieldName(value = "记录日期",dateFormat = "yyyy-MM-dd")
    private Date date;

    private String error;

    private Integer rows;
}

 

 

导入入口

private static void testImport() throws IOException {
        String fileUrl = "C:\\Users\\Administrator\\Desktop\\测试导出.xlsx";
        Workbook workbook = ExcelUtil.readExcel(fileUrl, ProjectVo.class);
        Sheet sheet = workbook.getSheet("sheet");
        List <ProjectVo> list = ExcelImport.getInstance()
                .setRowNum(0)
                .setFieldRows("rows")
                .isFormatTitle(true)
                .setFieldError("error")
                .transformation(sheet ,ProjectVo.class);
        list.stream().forEach(e ->{
            System.out.println(e.toString());
        });

    }

 

测试结果 

刚工作那会写过通用版导入导出,楼上方法正解