基于JavaBean注解(通过java反射)的POI导出Excel,Excel下拉列表导出 源码分享

原创  郑建华   2019-12-09   841人阅读  12 条评论

    前段时间完成了一个Excel导出导入的功能,期间碰到很多问题,最终一一解决了。其中涉及到了java的反射,自定义注解的使用,POI API的使用,Excel下拉列表如何通过代码设置,文件上传等问题。也许有其他人也会碰到这样的问题,将源码分享出来,希望可以帮到他们。

    源码包括 :

    jar包,也可以使用pom方式导入,本系统使用的3.8版本

image.png

excel工具类,反射工具类,字典工具类,注解类等

image.png

  文件上传工具类

image.png

示例的控制层、服务层、实体类

image.png

Html示例页面以及上传组件

image.png

        模板页面

image.png

    接下来重点解析一下源码

    一、注解类

    最常用的是title sort dictType ,分别是标题,排序,字典。标题就是到处excel的标题名称,sort就是excel横向排第几个,dictType就是字典的key值,用于导出的值域转换显示,以及导出模板的下拉框值域来源。

image.png

    二、字典工具类

         1、初始化值方法,工具类中定义了一个静态Map用于保存字典map的一个大Map。初始化方法中,将程序中可能涉及到的值域全部设置到Map中。Map的key值一定要与实际使用的注解的字典key值保持一致。

image.png

        2、提供其他方法,获取字典map,根据value获取key,根据key获取value。

image.png

    三、导出工具类(重点)

        1、主构造函数。参数包含,导出文件标题,javaBean对象的类,导出类型,下拉数据值域,下拉数据对应的下标。下拉数据相关内容,可以从外部传入,也可以走默认下拉数据生成。逻辑主要是,先对javaBean对象类进行解析生成需要的字段信息。再根据字典工具类中的map生成下拉数据值域和下拉数据对应的下标。注意,此处要使用正常的话,javaBean注解的sort 必须是从1开始的,且连续。否则下拉数据下标会对应不准确。

image.png

image.png

    2、excel初始化函数。包括sheet页的生成,表头项的生成,以及下拉框数据的生成。下拉框数据的生成包含两种,一种是数据量少的,一种是数据量多的。数据量少的,是将下拉的数据缓存到类似内存的地方(猜测)。而数据量多的是直接新建sheet页用于存放数据,将下拉关系链接到指定列。为保证数据准确无误,直接使用第二种方式。

image.png

image.png

        image.png

        3、测试方法,测试工具类是否正确。

    

image.png

    四、导入工具类(重点)

    1、构造函数,根据文件名称等信息生成导入对象。

image.png

    2、获取数据方法。根据javaBean的类,标签页,获取数据。此处做了特殊处理,带有字典标记项的,下拉框值域我是以键值对方式 key-value保存的,这里获取数据,只需要获取key值返回。

image.png

image.png

    3、获取头部标题数据,用于验证导入数据格式正确。

image.png

    4、导入测试类

image.png

    五、后端调用示例

    1、javaBean配置示例。javaBean需要实现序列号接口,设置title,title中添加** 后面的内容显示在excel的批注中,sort设置的列序号

image.png

    2、导出模板,以及示例数据  调用示例

image.png

    3、导入数据 调用示例

image.png

    4、导入数据 服务示例。导入逻辑是根据实际业务逻辑进行编写,模板可以套用。支持多文件导入。循环文件进行导入,设置错误数量,导入日志信息集合。

    

image.png

                           校验数据格式,判断必填项值是否为空。数据为空或者格式不正确的,跳出当次循环,继续其他文件解析导入。

image.png

               具体导入逻辑中添加try catch ,已存在的数据直接提示信息,新数据走插入逻辑,并且出现错误仅记录错误信息,最终将数量和信息返回前端     

image.png

    六、前端调用示例

     1、下载模板、下载示例、上传文件、导入文件。

image.png

image.png

image.png

        2、上传插件

image.png

    七、页面效果

      1、导入界面

image.png

    2、下载的模板

    

image.png

    3、下载的示例

image.png

    4、真实模板数据

image.png

    5、多文件选择

image.png

    6、导入完成界面

image.png

    八、源码下载地址

        云盘下载

        评论回复获取分享密码

此处为隐藏内容,请评论后查看隐藏内容,谢谢!

本文地址:https://www.zjh336.cn/?id=71
版权声明:本文为原创文章,版权归 郑建华 所有,欢迎分享本文,转载请保留出处!

发表评论


表情

 评论列表

  1. 刘健
    刘健 【农民】  @回复

    我觉得 还可以

  2. 访客
    访客 【农民】  @回复

    不错

  3. 访客
    访客 【农民】  @回复

    非常受用,谢谢分享

  4. 访客
    访客 【乡长】  @回复

    我想看下呀

  5. 桑叶茶
    桑叶茶 【农民】  @回复

    这么长的文章写的很认真

  6. 访客
    访客 【农民】  @回复

    学习学习

  7. 访客
    访客 【乡长】  @回复

    不错

  8. 忆忘记
    忆忘记 【农民】  @回复

    伸手拿走

  9. 访客
    访客 【乡长】  @回复

    @回复

  10. 访客
    访客 【乡长】  @回复

    很棒呢

  11. 访客
    访客 【乡长】  @回复

    饺子滋滋是

  12. 访客
    访客 【乡长】  @回复

    不错不错看看源码