POI与JXL的实战性能对比

2024-04-09 06:32
文章标签 实战 性能 对比 poi jxl

本文主要是介绍POI与JXL的实战性能对比,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目前我所负责的系统中有POI和JXL两种方式的导出数据实现。
项目初期数据量不大一般使用JXL的方式,可以满足需求,后来在进行一些盘点,等月度出入库查询报表统计的时候出现了超过最大sheet行的错误,另外堆内存也被占满了。
所以后面就紧急将部分重要功能,要导的数据量大的几个模块改造成POI的方式了。但是仍然跑的很慢,没有了解POI的另外一种实现方式,后来对POI的工具类,以及POI的导出实现做了部分修正,顺利完成升级。

我的初步了解:
JXL:支持比较低版本的excel,比如Excel 95 ,97 ,2000,2003
由于Excel版本比较低,导致最大行有限制,无法导出65535以上量级的数据
对于内存,和时间的花费也比POI基于内存+磁盘的方式高。

网友技术说明
1. 读取Excel公式(可以读取Excel 97以后的公式)
2. 生成Excel数据表(格式为Excel 97)
3. 支持字体、数字、日期的格式化
4. 支持单元格的阴影操作,以及颜色操作
5. 修改已经存在的数据表
6. 是最基础的excel api
7. 小文件读取效率比较高
8. 跨平台
POI技术说明

  1. 能保持Excel里原有的宏(但不能用它写新的宏)。
  2. 不支持跨平台(主要就是Java语言)
  3. 在一些业务场景中代码相对复杂,但是API丰富,支持多种模式的读写。
  4. 支持比较新版本的excel.
  5. 读写的时候比较占内存。
  6. 读写的时候比较占内存。
  7. 支持大数量大文件的读写操作。但是需要熟悉API。

总体来说,对于简单的单表excel导入导出的需求,建议使用JXL。数据量稍微小点,占用内存少,速度快。
对于报表类的,涉及月份数据量,多表数据聚合在一起建议使用POI。

下面简要介绍一下POI的两种读写模式。
首先要知道poi中的几个概念与excel是什么关系
WorkBook:一个excel文件
Sheet:页签,工作表,代表一个excel文件的一张表
Cell:一张表中的一个单元格
CellStyle:单元格的样式
Row:excel表中的一行
上面的每个抽象出来的对象都被POI封装好了,声明了接口,有不同的实现方式。

WorkBook:
这里写图片描述
Sheet:
这里写图片描述
Cell:
这里写图片描述
Row
这里写图片描述

基本有三种实现模式,每种实现模式有不同的用途:

XSSFWorkbook,SXSSFWorkbook,HSSFWorkbook,
HSSFSheet,SXSSFSheet,XSSFChartSheet,XSSFDialogsheet,
XSSFCell,SXSSFCell,HSSFCell
有三种实现方式:
XSSFCell:基于内存
SXSSFCell:基于内存+磁盘的写入方式
HSSFCell:高水平的写入方式,对于单元格的数据类型有很高的限制,比如:字符串格式只有字符,不能有数字

这篇关于POI与JXL的实战性能对比的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/887418

相关文章

Python如何使用__slots__实现节省内存和性能优化

《Python如何使用__slots__实现节省内存和性能优化》你有想过,一个小小的__slots__能让你的Python类内存消耗直接减半吗,没错,今天咱们要聊的就是这个让人眼前一亮的技巧,感兴趣的... 目录背景:内存吃得满满的类__slots__:你的内存管理小助手举个大概的例子:看看效果如何?1.

java中使用POI生成Excel并导出过程

《java中使用POI生成Excel并导出过程》:本文主要介绍java中使用POI生成Excel并导出过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求说明及实现方式需求完成通用代码版本1版本2结果展示type参数为atype参数为b总结注:本文章中代码均为

Python实现Microsoft Office自动化的几种方式及对比详解

《Python实现MicrosoftOffice自动化的几种方式及对比详解》办公自动化是指利用现代化设备和技术,代替办公人员的部分手动或重复性业务活动,优质而高效地处理办公事务,实现对信息的高效利用... 目录一、基于COM接口的自动化(pywin32)二、独立文件操作库1. Word处理(python-d

Java常用注解扩展对比举例详解

《Java常用注解扩展对比举例详解》:本文主要介绍Java常用注解扩展对比的相关资料,提供了丰富的代码示例,并总结了最佳实践建议,帮助开发者更好地理解和应用这些注解,需要的朋友可以参考下... 目录一、@Controller 与 @RestController 对比二、使用 @Data 与 不使用 @Dat

python中字符串拼接的几种方法及优缺点对比详解

《python中字符串拼接的几种方法及优缺点对比详解》在Python中,字符串拼接是常见的操作,Python提供了多种方法来拼接字符串,每种方法有其优缺点和适用场景,以下是几种常见的字符串拼接方法,需... 目录1. 使用 + 运算符示例:优缺点:2. 使用&nbsjsp;join() 方法示例:优缺点:3

Python实战之屏幕录制功能的实现

《Python实战之屏幕录制功能的实现》屏幕录制,即屏幕捕获,是指将计算机屏幕上的活动记录下来,生成视频文件,本文主要为大家介绍了如何使用Python实现这一功能,希望对大家有所帮助... 目录屏幕录制原理图像捕获音频捕获编码压缩输出保存完整的屏幕录制工具高级功能实时预览增加水印多平台支持屏幕录制原理屏幕

Redis中高并发读写性能的深度解析与优化

《Redis中高并发读写性能的深度解析与优化》Redis作为一款高性能的内存数据库,广泛应用于缓存、消息队列、实时统计等场景,本文将深入探讨Redis的读写并发能力,感兴趣的小伙伴可以了解下... 目录引言一、Redis 并发能力概述1.1 Redis 的读写性能1.2 影响 Redis 并发能力的因素二、

C++ 各种map特点对比分析

《C++各种map特点对比分析》文章比较了C++中不同类型的map(如std::map,std::unordered_map,std::multimap,std::unordered_multima... 目录特点比较C++ 示例代码 ​​​​​​代码解释特点比较1. std::map底层实现:基于红黑

Java利用poi实现word表格转excel

《Java利用poi实现word表格转excel》这篇文章主要为大家详细介绍了Java如何利用poi实现word表格转excel,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、每行对象类需要针对不同的表格进行对应的创建。package org.example.wordToEx

最新Spring Security实战教程之Spring Security安全框架指南

《最新SpringSecurity实战教程之SpringSecurity安全框架指南》SpringSecurity是Spring生态系统中的核心组件,提供认证、授权和防护机制,以保护应用免受各种安... 目录前言什么是Spring Security?同类框架对比Spring Security典型应用场景传统