poi使用随笔
HSSFworkbook,XSSFworkbook,SXSSFworkbook区别简述
- HSSFWorkbook:是操作Excel2003以前(包括2003)的版本,扩展名是.xls;
- XSSFWorkbook:是操作Excel2007的版本,扩展名是.xlsx;
- 前两者由于是office较为早期的版本,对于行数,列数,sheet表数都有太多限制,两者的具体区别在这里,近互联网发展迅猛,需求日益递增,对于应对大数据量的导入导出解析等,对性能和效率要求越来越高,所以需求倒逼技术升级。至此,今天的重头戏要登场了,他就是SXSSFWorkbook,刚才列举的两个,都是小数据量,内存式操作,内存中操作数据优缺点都比较直观,优点当然是读写块,缺点是小数据量尚可,使用范围和场景受限。SXSSFWorkbook,则是兼并的这两者的优点,采用临时文件+内存的方式进行读写。
按说写到这里已经差不多了,但是先别走,等我把话说完,刚才说的这么多的优点,难道没有缺点?经过一段时间使用后发现,服务器磁盘上升的异常迅速,但是感觉应该及时这块改造引起的,
通过源码分析,
- 首先是
SXSSFWorkbook workbook = new SXSSFWorkbook(); Sheet sheet = workbook.createSheet(sheetName);
问题就在创建Sheet上,我们进去看看!

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

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

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

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

已经接近真相了,

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

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


我就呵呵了,poi可是Apache的项目,你这是在小看谁呢,借这个机会正好说下我的感受,很多人喜欢主观判断,一个老段子说的挺好,
插不进去,只能是你姿势不对
好了,闲话到此为止看源码

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

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

哇塞,终点站了,请刷卡下车......
poi使用随笔的更多相关文章
- 多目标跟踪(MOT)论文随笔-POI: Multiple Object Tracking with High Performance Detection and Appearance Feature
网上已有很多关于MOT的文章,此系列仅为个人阅读随笔,便于初学者的共同成长.若希望详细了解,建议阅读原文. 本文是tracking by detection 方法进行多目标跟踪的文章,最大的特点是使用 ...
- 随笔记录①—利用poi读取Word中的标题和内容
使用时间:4小时 使用poi方法将word中的内容提取出来,并输出到控制台或者存储到数据库poi.jar下载地址:https://www.apache.org/dyn/closer.lua/poi/r ...
- Java -- POI -- 随笔汇总
1. 判断指定的单元格是否是合并单元格 /** * 功能:判断指定的单元格是否是合并单元格 * 原理:excel中的合并单元格其实就是首单元格,只不过该单元格增加了 rowspan和colspan两个 ...
- 多目标跟踪(MOT)论文随笔-SIMPLE ONLINE AND REALTIME TRACKING WITH A DEEP ASSOCIATION METRIC (Deep SORT)
网上已有很多关于MOT的文章,此系列仅为个人阅读随笔,便于初学者的共同成长.若希望详细了解,建议阅读原文. 本文是tracking by detection 方法进行多目标跟踪的文章,在SORT的基础 ...
- POI处理Excel中各种日期格式问题
前不久写过一篇随笔<EXCEL解析之终极方法WorkbookFactory>,提到使用WorkbookFactory来处理Excel文件数据,最近发现一个问题就是这个办法不能很好的处理各种 ...
- AI人工智能系列随笔
初探 AI人工智能系列随笔:syntaxnet 初探(1)
- 【置顶】CoreCLR系列随笔
CoreCLR配置系列 在Windows上编译和调试CoreCLR GC探索系列 C++随笔:.NET CoreCLR之GC探索(1) C++随笔:.NET CoreCLR之GC探索(2) C++随笔 ...
- C++随笔:.NET CoreCLR之GC探索(4)
今天继续来 带大家讲解CoreCLR之GC,首先我们继续看这个GCSample,这篇文章是上一篇文章的继续,如果有不清楚的,还请翻到我写的上一篇随笔.下面我们继续: // Initialize fre ...
- C++随笔:从Hello World 探秘CoreCLR的内部(1)
紧接着上次的问题,上次的问题其实很简单,就是HelloWorld.exe运行失败,而本文的目的,就是成功调试HelloWorld这个控制台应用程序. 通过我的寻找,其实是一个名为TryRun的文件出了 ...
随机推荐
- py+selenium运行时报错Can not connect to the Service IEDriverServer.exe
问题: 运行用例时,出现报错(host文件已加入127.0.0.1 localhost): raise WebDriverException("Can not connect to the ...
- Spark学习之RDD
RDD概述 什么是RDD RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变.可分区.里面的元素可并行计算的集合 ...
- 地图组件demo
高德地图API(demo未完善) 1:声请JSAPI的key值:http://lbs.amap.com/dev/#/(已声请key名称:demo-javascipt key:7cbbed2d9a0c0 ...
- 一键布署WEB应用脚本
一.本机脚本(基于mac) #!/bin/sh if [ $# -lt 1 ]; then echo "deploy.sh <version number>" exi ...
- Ambassador,云原生应用的“门神”
目前,行业内基于云原生思想的开源项目,重点在于管理.控制微服务以及微服务架构下服务之间的通信问题.它们有效的解决了“服务异构化”.“动态化”.“多协议”场景所带来的east/west流量的管控问题,而 ...
- SQLServer 问题(一)
出现这种错误: [DBNETLIB][ConnectionOpen(Connect()).]SQL Server 不存在或拒绝访问 数据库错误 原因: 1.查看是不是没有在数据库中添加数据库服务器地址 ...
- Visual Studio 调试(系列文章)
调试是软件开发过程中非常重要的一个部分,它具挑战性,但是也有一定的方法和技巧. Visual Studio 调试程序有助于你观察程序的运行时行为并发现问题. 该调试器可用于所有 Visual Stud ...
- ListActivity
ListActivity的使用 ListActivity类中集成了一个ListView控件. 通过继承ListActivity类可方便地使用ListView控件 1 public class 类名ex ...
- 【WPF】大量Canvas转换为本地图片遇到的问题
原文地址:https://www.cnblogs.com/younShieh 项目中遇到一个难题,需要将上百个没有显示出来的Canvas存储为图片保存在本地. 查阅资料后(百度一下)后得知保存为本 ...
- 实用小工具推荐 OpenWrite
[实用小工具推荐]给技术同学们推荐一款比较好用的工具,可以实现一稿多发,主流的技术渠道基本涵盖了:https://www.openwrite.cn/ 因为工作的关系,认识了很多做技术公众号的小伙伴,同 ...
