首页 > 其他分享 >【技术选型】Office操作

【技术选型】Office操作

时间:2024-12-31 17:29:50浏览次数:1  
标签:文件 Office Excel 选型 内存 POI Apache 操作

方案:Apache POI 、阿里EasyExcel

一、Apache POI 

https://www.cnblogs.com/crazymakercircle/p/18634991

Apache POI 是 Apache 软件基金会的开放源码函式库,用于操作 Microsoft Office 格式文件,如 Excel、Word 和 PowerPoint 等。它提供了一组 Java API,让开发者能够在 Java 程序中创建、读取和修改这些文件格式,而无需依赖于 Microsoft Office 软件本身。

poi 依赖的基础接口: WorkBook ,有几种实现子类需要进行区分,

POI应用场景和优势

应用场景1 : 数据导出和报表生成

应用场景2 : 文件格式转换:可以将一种 Office 格式转换为另一种格式。例如,将.doc文件转换为.docx文件,或者将.xls文件转换为.xlsx文件,方便文件的统一管理和共享。

应用场景3 : 小批量 数据 处理:对于大量的 Office 文件,如需要批量修改文件中的数据、样式或者进行数据提取,POI 可以编写自动化脚本进行处理。例如,在文档审核流程中,批量提取 Word 文档中的关键信息进行检查。

POI 优势

  • 跨平台:作为 Java 库,POI 可以在任何支持 Java 运行环境的平台上使用,这使得它在企业级的异构系统中非常有用。
  • 开源免费:POI 是开源软件,开发者可以免费使用和修改其代码,降低了开发成本。
  • 功能丰富:能够处理多种 Office 文件格式,并且提供了详细的 API 来操作文件的各个元素,如文档结构、内容、样式等。

POI 的不足:大数据量 , POI 要么是 OOM,要么借助 磁盘,速度太慢。

 

二、阿里EasyExcel

https://www.cnblogs.com/crazymakercircle/p/18634991

https://easyexcel.opensource.alibaba.com/docs/current/

主要解决 Apache POI 在处理大量数据时可能出现的内存溢出问题,提供了更加便捷、高效的 Excel 读写操作。

优势:

1:内存优化:EasyExcel 使用了 Sax 解析模式,在解析 Excel 文件时采用一行一行读取的方式,避免了将整个文件加载到内存中,大大减少了内存的使用,适用于处理大型 Excel 文件。

2:使用方便:EasyExcel 提供了简单的 API,使得读取和写入 Excel 数据变得更加容易,开发人员可以通过少量代码实现复杂的 Excel 操作。

来自官网:easyexcel重写了poi对07版Excel的解析,一个3M的excel用POI sax解析依然需要100M左右内存,改用easyexcel可以降低到几M,并且再大的excel也不会出现内存溢出;03版依赖POI的sax模式,在上层做了模型转换的封装,让使用者更加简单方便

pom依赖:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>easyexcel</artifactId>
    <version>3.1.1</version>
</dependency>

 

标签:文件,Office,Excel,选型,内存,POI,Apache,操作
From: https://www.cnblogs.com/clarino/p/18644498

相关文章

  • C#实现打LOG操作日志
    1.错误和警告信息单独生产文本进行记录;2.日志到一定内存阈值可以打包压缩,单独存储起来,修改字段MaxLogFileSizeForCompress的值即可;3.Log类调用举例:Log.Txt(JB.信息,“日志记录内容”,"通道1");4.实现代码(需要引用ICSharpCode.SharpZipLib类库)点击查看代码usingSystem;us......
  • 《操作系统真相还原》实验记录2.4——中断处理程序编写
    零、程序编写初步分析中断处理程序编写初步计划如下【图中关系为:调用者->被调用函数】init_all函数用来初始化所有的设备及数据结构,我们打算在kernel内核的main主函数中调用它来完成初始化工作。init_all首先调用idt_init,它用来初始化中断相关的内容。由于初始化也要......
  • C# 使用TWAIN协议进行扫描仪操作
    C#使用TWAIN协议进行扫描仪操作 折腾两台扫描仪程序的修改,今天有空把程序中涉及到扫描仪操作的代码贴出来,供大家一起交流学习。1publicArrayListTransferPictures()2{3ArrayListpics=newArrayList();4if(srcds.Id==......
  • C# FTP操作(上传、下载等……)
    C#FTP操作(上传、下载等……)|Id|Title|DateAdded|SourceUrl|PostType|Body|BlogId|Description|DateUpdated|IsMarkdown|EntryName|CreatedTime|IsActive|AutoDesc|AccessPermission||-------------|-------------|-------------|------------......
  • 使用js写个方法检测用户在5分钟内无任何操作则退出登录
    在前端开发中,你可以通过监听用户的各种交互事件来判断用户是否在活动。如果用户5分钟内没有任何操作,你可以触发一个函数来进行退出登录的操作。以下是一个简单的示例,使用JavaScript和setTimeout来实现这个功能:letuserActivityTimeout;constINACTIVITY_TIMEOUT=5*60*1000......
  • 熟悉常用的Linux操作和Hadoop操作
    实验一熟悉常用的Linux操作和Hadoop操作1.实验目的Hadoop运行在Linux系统上,因此,需要学习实践一些常用的Linux命令。本实验旨在熟悉常用的Linux操作和Hadoop操作,为顺利开展后续其他实验奠定基础。2.实验平台操作系统:Linux;Hadoop版本:2.7.1。3.实验内容和要求(一)熟悉常用......
  • 熟悉常用的HBase操作
    实验3熟悉常用的HBase操作  1.实验目的(1)理解HBase在Hadoop体系结构中的角色;(2)熟练使用HBase操作常用的Shell命令;(3)熟悉HBase操作常用的JavaAPI。2.实验平台(1)操作系统:Linux(建议Ubuntu16.04或Ubuntu18.04);(2)Hadoop版本:3.1.3;(3)HBase版本:2.2.2;(4)JDK版本:1.8;(5)JavaIDE:Eclipse......
  • 实验二 熟悉常用的HDFS操作
    实验2熟悉常用的HDFS操作  1.实验目的(1)理解HDFS在Hadoop体系结构中的角色;(2)熟练使用HDFS操作常用的Shell命令;(3)熟悉HDFS操作常用的JavaAPI。2.实验平台(1)操作系统:Linux(建议Ubuntu16.04或Ubuntu18.04);(2)Hadoop版本:3.1.3;(3)JDK版本:1.8;(4)JavaIDE:Eclipse。3.实验步骤(一)编......
  • NoSQL和关系数据库的操作比较
    实验4NoSQL和关系数据库的操作比较 1.实验目的(1)理解四种数据库(MySQL、HBase、Redis和MongoDB)的概念以及不同点;(2)熟练使用四种数据库操作常用的Shell命令;(3)熟悉四种数据库操作常用的JavaAPI。2.实验平台(1)操作系统:Linux(建议Ubuntu16.04或Ubuntu18.04);(2)Hadoop版本:3.1.3;(3)My......
  • 熟悉Hive的基本操作
    实验6熟悉Hive的基本操作 1.实验目的(1)理解Hive作为数据仓库在Hadoop体系结构中的角色。(2)熟练使用常用的HiveQL。2.实验平台操作系统:Ubuntu18.04(或Ubuntu16.04)。Hadoop版本:3.1.3。Hive版本:3.1.2。JDK版本:1.8。3.数据集由《Hive编程指南》(O'Reilly系列,人民邮电出版社)......