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的文件出了 ...
随机推荐
- C#中用WMI实现对驱动的查询
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- 实现一个代码自动生成(一):模板引擎Freemarker
目录 前言 模板引擎FreeMarker 前言 在现在的开发当中,代码生成已经是必不可少的一个功能,每个公司都会有自己的一套定制的项目骨架,而实现代码自动生成,模板引擎是必不可少的,所以在这篇博客中, ...
- Excel催化剂开源第4波-ClickOnce部署要点之导入数字证书及创建EXCEL信任文件夹
Excel催化刘插件使用Clickonce的部署方式发布插件,以满足用户使用插件过程中,需要对插件进行功能升级时,可以无痛地自动更新推送新版本.但Clickonce部署,对用户环境有较大的要求,前期首 ...
- 基于SpringBoot+Redis的Session共享与单点登录
title: 基于SpringBoot+Redis的Session共享与单点登录 date: 2019-07-23 02:55:52 categories: 架构 author: mrzhou tag ...
- C语言入门7-程序设计方法基础-循环结构
程序设计方法基础-循环结构 循环三要素: 初值 循环判断条件 步长(循环增量) 循环结构在有些书籍上也称为重复结构, 即反复执行某一部分的操作. 循环三要素: 初值 循环判断条件 步 ...
- [leetcode] 300. Longest Increasing Subsequence (Medium)
题意: 求最长增长的子序列的长度. 思路: 利用DP存取以i作为最大点的子序列长度. Runtime: 20 ms, faster than 35.21% of C++ online submissi ...
- lnmp php使用命令行去备份数据库
<?php //备份数据库we8和foshan $time = date("Y-m-d",time()); $backtime = date("Y-m-d" ...
- 神奇的 SQL 之 CASE表达式,妙用多多 !
前言 历史考试选择题:黄花岗起义第一枪谁开的? A宋教仁 B孙中山 C黄兴 D徐锡麟,考生选C. 又看第二题:黄花岗起义第二枪谁开的? 考生傻了,就选了个B. 接着看第三题:黄花岗起义中,第三枪谁开的 ...
- solidity的delete操作汇总
简介 Solidity中的特殊操作符delete用于释放空间,为鼓励主动对空间的回收,释放空间将会返还一些gas. delete操作符可以用于任何变量,将其设置成默认值0. 删除枚举类型时,会将其值重 ...
- 03-k8s认证
目录 k8s认证 客户端 ---> API Server 外部访问 pod 客户端 RBCA k8s 用户类型 dashboard 的认证登录 k8s认证 主要使用 RBAC授权检查机制 认证: ...
