美文网首页
java excel 导入、导出

java excel 导入、导出

作者: 虾米咬小米 | 来源:发表于2021-03-08 10:36 被阅读0次

    oi、EasyExcel、EasyPOI

    从easypoi和easyExcel 的 源码
    (1)这两者都是引用Apache的poi 但是区别就是两者的解析不同
    (2)easypoi的解析方式是dom解析,把结果一次都读入内存操作,这样的操作平时是不会有问题的,但是并发量上来的时候就会出现OOM
    (3)而阿里的easyExcel 运用的SAX的解析方式,明显降低了内存,但是速率下降

    ps:

    在java中,原生解析xml文档的方式有两种,分别是:Dom解析和Sax解析

    Dom解析功能强大,可增删改查,操作时会将xml文档以文档对象的方式读取到内存中,因此适用于小文档

    Sax解析是从头到尾逐行逐个元素读取内容,修改较为不便,但适用于只读的大文档

    本文主要讲解Sax解析,其余放在后面

    Sax采用事件驱动的方式解析文档。简单点说,如同在电影院看电影一样,从头到尾看一遍就完了,不能回退(Dom可来来回回读取)

    在看电影的过程中,每遇到一个情节,一段泪水,一次擦肩,你都会调动大脑和神经去接收或处理这些信息

    同样,在Sax的解析过程中,读取到文档开头、结尾,元素的开头和结尾都会触发一些回调方法,你可以在这些回调方法中进行相应事件处理

    这四个方法是:startDocument() 、 endDocument()、 startElement()、 endElement

    此外,光读取到节点处是不够的,我们还需要characters()方法来仔细处理元素内包含的内容

    将这些回调方法集合起来,便形成了一个类,这个类也就是我们需要的触发器

    一般从Main方法中读取文档,却在触发器中处理文档,这就是所谓的事件驱动解析方法

    image

    如上图,在触发器中,首先开始读取文档,然后开始逐个解析元素,每个元素中的内容会返回到characters()方法

    接着结束元素读取,所有元素读取完后,结束文档解析

    相关文章

      网友评论

          本文标题:java excel 导入、导出

          本文链接:https://www.haomeiwen.com/subject/izhpqltx.html