poi 导入Excel封装 并处理数据类型

这篇博客介绍了在OA系统开发中使用Apache POI库进行Excel导入的封装方法,特别关注了数据类型转换的问题。作者通过自定义注解处理不想导入的字段,并提供了两种处理方式:依据实体类Field类型和Cell类型。同时指出了限制,如字段顺序必须一致,有注解的属性不应在Excel中出现,以及对未来的改进计划。
摘要由CSDN通过智能技术生成

最近正在做OA,需求需要导入导出EXCEL ,功能和方法使用起来挺简单,做起来发现类型问题比较坑,自己稍微封装了一下,

  • 大致功能就是 通过传入实体类的class对象和 Sheet 工作簿对象获取 从Excel文件中获取,实体类集合。

  • excel2003的.xls格式 对应是HSSFCell,而之后的xlsx对应的则是XSSFCell,但是他们都继承于Cell,所以使用Cell就可以使用两种格式的excel导入了

对于不想导入的字段

自定义一个注解,在实体类中的属性上标注,相应的Excel中也不该有该字段
有一点不好的是:excel中字段顺序需要和实体类中属性顺序一致,且有自定义注解的属性不应该出现在Excel中
有时间我会对扩展性和通用性做进一步封装和处理

  • 这里 注解名为NoExport 是因为之前写导出的时候命名,额 就没有改了
/**
 * 自定义标签  : 标注了的对象不导出导入
 * @author huang
 *
 */
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface NoExport {
   

}
@RequestMapping("/XXXXX")
public String includeEmp(MultipartFile multfile ) throws Exception {
    try {
        //自己封装的 导入功能类
        ImportExcel ie = new ImportExcel();
        POIFSFileSystem fs = new POIFSFileSystem(multfile.getInputStream());
        HSSFWorkbook wb = new HSSFWorkbook(fs);
        //获取导入的员工集合
        List<Employee> emplist = new ArrayList<>();
        if ( wb.getSheet("Employee表")!=null ) {
                emplist = (List<Employee>) ie.getListBySheet(wb.getSheet("Employee表"), Employee.class);
        }

        List<Department> deplist = new ArrayList<>();
        //获取导入的职工的集合
        if ( wb.getSheet("Department表")!=null ) {
            deplist = (List<Department>) ie.getListBySheet(wb.getSheet("Department表"), Department.class);
        }
}

导入功能类

  • 方式一:根据实体类的 Field 的类型来判断处理
  • 方式二:根据Cell 类型 判断处理
    • 单元格类型 描述
      CELL_TYPE
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值