HSSFworkbook,XSSFworkbook,SXSSFworkbook区别简述

  1. HSSFWorkbook:是操作Excel2003以前(包括2003)的版本,扩展名是.xls;
  2. XSSFWorkbook:是操作Excel2007的版本,扩展名是.xlsx;
  3. 前两者由于是office较为早期的版本,对于行数,列数,sheet表数都有太多限制,两者的具体区别在这里近互联网发展迅猛,需求日益递增,对于应对大数据量的导入导出解析等,对性能和效率要求越来越高,所以需求倒逼技术升级。至此,今天的重头戏要登场了,他就是SXSSFWorkbook,刚才列举的两个,都是小数据量,内存式操作,内存中操作数据优缺点都比较直观,优点当然是读写块,缺点是小数据量尚可,使用范围和场景受限。SXSSFWorkbook,则是兼并的这两者的优点,采用临时文件+内存的方式进行读写。

按说写到这里已经差不多了,但是先别走,等我把话说完,刚才说的这么多的优点,难道没有缺点?经过一段时间使用后发现,服务器磁盘上升的异常迅速,但是感觉应该及时这块改造引起的,

通过源码分析,

  1. 首先是
SXSSFWorkbook workbook = new SXSSFWorkbook();

Sheet sheet = workbook.createSheet(sheetName);

 问题就在创建Sheet上,我们进去看看!

原来内部也是基于XSSF够早的啊,继续刨

这个方法把XSSF转换成了SXSS,继续下钻

这里有个_writer,需要注意下,我们去这里看看

由于压缩临时文件会导致性能下降,所以_compressTmpFiles使用默认值false,继续刨

已经接近真相了,

原来如此,在这里创建了临时对象,然后进行文件方式缓存数据,怪不得,会有这么多的临时文件

既然找到源头就好办了,把临时文件删了不就好了,在这里我不得不吐槽下一些人,我不是针对谁,如果我的截图中出现了您的帖子,纯属无意冒犯

我就呵呵了,poi可是Apache的项目,你这是在小看谁呢,借这个机会正好说下我的感受,很多人喜欢主观判断,一个老段子说的挺好,

插不进去,只能是你姿势不对

好了,闲话到此为止看源码

下面说下我的解决过程,清除临时文件,但是方法受保护,应该再往上翻

方法还是受限,再往上翻,

哇塞,终点站了,请刷卡下车......

poi使用随笔的更多相关文章

  1. 多目标跟踪(MOT)论文随笔-POI: Multiple Object Tracking with High Performance Detection and Appearance Feature

    网上已有很多关于MOT的文章,此系列仅为个人阅读随笔,便于初学者的共同成长.若希望详细了解,建议阅读原文. 本文是tracking by detection 方法进行多目标跟踪的文章,最大的特点是使用 ...

  2. 随笔记录①—利用poi读取Word中的标题和内容

    使用时间:4小时 使用poi方法将word中的内容提取出来,并输出到控制台或者存储到数据库poi.jar下载地址:https://www.apache.org/dyn/closer.lua/poi/r ...

  3. Java -- POI -- 随笔汇总

    1. 判断指定的单元格是否是合并单元格 /** * 功能:判断指定的单元格是否是合并单元格 * 原理:excel中的合并单元格其实就是首单元格,只不过该单元格增加了 rowspan和colspan两个 ...

  4. 多目标跟踪(MOT)论文随笔-SIMPLE ONLINE AND REALTIME TRACKING WITH A DEEP ASSOCIATION METRIC (Deep SORT)

    网上已有很多关于MOT的文章,此系列仅为个人阅读随笔,便于初学者的共同成长.若希望详细了解,建议阅读原文. 本文是tracking by detection 方法进行多目标跟踪的文章,在SORT的基础 ...

  5. POI处理Excel中各种日期格式问题

    前不久写过一篇随笔<EXCEL解析之终极方法WorkbookFactory>,提到使用WorkbookFactory来处理Excel文件数据,最近发现一个问题就是这个办法不能很好的处理各种 ...

  6. AI人工智能系列随笔

    初探 AI人工智能系列随笔:syntaxnet 初探(1)

  7. 【置顶】CoreCLR系列随笔

    CoreCLR配置系列 在Windows上编译和调试CoreCLR GC探索系列 C++随笔:.NET CoreCLR之GC探索(1) C++随笔:.NET CoreCLR之GC探索(2) C++随笔 ...

  8. C++随笔:.NET CoreCLR之GC探索(4)

    今天继续来 带大家讲解CoreCLR之GC,首先我们继续看这个GCSample,这篇文章是上一篇文章的继续,如果有不清楚的,还请翻到我写的上一篇随笔.下面我们继续: // Initialize fre ...

  9. C++随笔:从Hello World 探秘CoreCLR的内部(1)

    紧接着上次的问题,上次的问题其实很简单,就是HelloWorld.exe运行失败,而本文的目的,就是成功调试HelloWorld这个控制台应用程序. 通过我的寻找,其实是一个名为TryRun的文件出了 ...

随机推荐

  1. Element ui colorpicker在Vue中的使用

    首先要有一个color-picker组件 <el-color-picker v-model="headcolor"></el-color-picker> 在 ...

  2. Java面试题汇总---基础版(附答案)

    基于我个人对面试的认知和招聘经验,在此我总结一下Java开发者的基础知识掌握要求,及应聘者面试的需要准备的内容. 首先,Java基础是每个面试官都会问到的,可能只是针对工作经验的多少,对问题追踪深度有 ...

  3. Java 内存映射文件

    import java.io.*; import java.nio.MappedByteBuffer; import java.nio.channels.FileChannel; import jav ...

  4. word 2010 页眉 http://jingyan.baidu.com/article/a65957f4b0208624e77f9b55.html

    word 2010 页眉 http://jingyan.baidu.com/article/a65957f4b0208624e77f9b55.html

  5. Git学习(一):版本控制介绍及安装

    一.VCS(版本控制系统)的演变 1.集中式VCS的特点 1)有集中的版本管理服务器: 2)具备文件版本管理和分支管理能力: 3)集成效率较没有版本控制(如:进行文件夹标注的方式)有明显地的提高: 4 ...

  6. C# MATLAB混编(二)

    在上一篇博客中说到按照参考教程操作之后依然有两个问题. 问题1:当我在matlab中输入mbuild -setup后    报错 解:这是因为VS与Matlab存在版本匹配问题,理论上来说vs版本最好 ...

  7. Java--重载与重写的区别

    1.重写必须继承,重载不用.2.重写的方法名,参数数目相同,参数类型兼容,重载的方法名相同,参数列表不同.3.重写的方法修饰符大于等于父类的方法,重载和修饰符无关.4.重写不可以抛出父类没有抛出的一般 ...

  8. 如何简单地利用Bitmap为中介储存图片到数据库中

        这是我的第一篇博文,请大家多多指教!     大概一个月之前,在跟朋友合作开发一个APP的过程中,我们发现到一个问题:图片的存储.因为数据库没有图片这种数据类型,当用户上传的图片需要存储的时候 ...

  9. Cookie和Session的使用详解

    我们在使用接口请求时经常听到Cookie和Session的知识,那么它们的实际意义和使用场景在哪里呢 ?    介绍如下 一.首先需要了解的是为什么需要有Cookie和Session这两个东西:Htt ...

  10. 【MySQL】ON DUPLICATE KEY UPDATE

    之前没用过这个操作,甚至没见过--最近接触到,而且还挺有用. 作用:若 KEY 不重复,则插入记录:否则更新记录. 单条操作: INSERT INTO table(a, b, c) VALUES (1 ...