当前位置: 首页 > news >正文

Java操作Excel之 POI介绍和入门

POI是Apache 提供的一个开源的Java API,用于操作Microsoft文档格式,如Excel、Word和PowerPoint等。POI是Java中处理Microsoft文档最受欢迎的库。

截至2023/12, 最新版本时 POI 5.2.5。

JDK版本兼容

POI版本JDK版本
4.0及之上版本> 1.8
3.11及之后的 3.x> 1.6
3.5 到 3.10>1.5
3.5 之前的版本1.4+

使用Maven导入POI相关依赖

要使用 Apache POI 处理 Excel 文件,一般需要导入以下 Maven 依赖:

<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>5.2.5</version>
</dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.2.5</version>
</dependency>

其中,

  • poi 是基础依赖,提供了操作 Excel 文件的核心功能;
  • poi-ooxml 是操作 Office Open XML 格式文件(如 .xlsx、.docx 等)的扩展库。

只需要处理 Excel 文件,以上两个依赖已经足够了。如果需要处理 Word、PowerPoint 等其它类型的 Office 文件,还需要导入相应的扩展库。

基本示例

以下是一个使用POI 5创建和编辑Excel文件的示例代码:

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.FileOutputStream;
import java.io.IOException;public class PoiExample {public static void main(String[] args) throws IOException {// 创建一个新的工作簿Workbook workbook = new XSSFWorkbook();// 创建一个新的工作表Sheet sheet = workbook.createSheet("Sheet1");// 创建一行并在其中添加单元格Row row = sheet.createRow(0);Cell cell = row.createCell(0);cell.setCellValue("Hello, World!");// 将工作表写入文件String filename = "example.xlsx";FileOutputStream outputStream = new FileOutputStream(filename);workbook.write(outputStream);outputStream.close();System.out.println("Excel文件已创建并保存到 " + filename);}
}

此代码将创建一个名为"example.xlsx"的新Excel文件,并在第一个工作表上添加一个单元格,其中包含文本"Hello, World!"。
产生的Excel 文件打开之后的画面如下所示:
在这里插入图片描述

请注意,在代码中我们使用了XSSFWorkbook类,这个类是用于处理.xlsx文件格式的工作簿。 如果你要处理.xls文件格式,则需要使用HSSFWorkbook类。

HSSFWorkbook和XSSFWorkbook区别

在POI中,HSSFWorkbook和XSSFWorkbook都是用来表示Excel工作簿(workbook)的类,但它们在处理Excel格式上有所不同。

  1. HSSFWorkbook

HSSFWorkbook是POI中操作Excel 97-2003格式(.xls)的类。它基于“OLE2”文件格式,它使用的是旧的二进制格式,所以它的最大限制是65536行和256列。HSSFWorkbook有一些缺点,如不能处理大于2GB的文件,但它在兼容性和使用方面非常好,特别是在使用低版本的Excel时。

  1. XSSFWorkbook

XSSFWorkbook是POI中操作Excel 2007及以上版本(.xlsx)的类。它基于XML文件格式,使用基于ZIP的文件格式。相比HSSFWorkbook,XSSFWorkbook可以处理更大的文件,支持更多的格式,并提供更好的性能。

在选择HSSFWorkbook和XSSFWorkbook时,可以根据所需的Excel格式以及文件大小和处理性能的需要进行选择。

错误解决之:java.lang.NoSuchMethodError: org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream.builder()

出现这个错误的原因可能时项目依赖的 Apache Commons IO 版本与 Apache POI 版本不兼容, 可能是项目已经导入了旧的 Apache Commons IO,但是POI要求的该库的版本又比较高,

Apache Commons IO是一个Java类库,它提供了许多有用的IO(输入/输出)实用程序,使得Java IO编程更加容易。它提供了一组简单而强大的工具类,可以用于处理常见的IO任务,如读写文件、复制文件、关闭文件流、处理文件路径等。此外,它还提供了一些高级功能,如符号链接处理、文件过滤器、流处理、资源管理等。Apache Commons IO项目是Apache Software Foundation的一个子项目,可以自由下载和使用。

该问题解决方法可以有多种:

  1. 检查项目中是否有多个版本的 Apache Commons IO。如果是,请删除其中一个版本。

  2. 更新Maven 依赖项,以确保 Apache POI 和 Apache Commons IO 版本是兼容的。比如说降级POI的版本到 5.0.0.Maven导入修改为如下:

		<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>5.0.0</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.0.0</version></dependency>

3. 如果使用的是较旧版本的 Apache POI,则升级到新版本。

poi-version.jar 基础依赖的包

在POI的基础依赖包的不同子包中存在一些同名的类, 比如Sheet , 在org.apache.poi.ss.usermodel和org.apache.poi.sl 中都存在, 这里看一下基础依赖的主要包及作用:

  • org.apache.poi.ss包是Apache POI库的核心包之一,它包含了用于处理Excel电子表格的类和接口。它提供了一些基于行和列的模型来处理Excel文件,支持Excel文件的读取、写入和修改。可以使用该包来创建、读取和编辑简单的Excel文件。

  • org.apache.poi.sl包则是Apache POI库的另一个包,它提供了一些类和接口,用于处理Microsoft Office Open XML文件格式中的幻灯片和演示文稿,如PPT和PPTX文件。它也包含了一些类和接口,用于处理其他的Office文件格式,如ODP和ODS文件。

  • org.apache.poi.hpsf 提供了处理Microsoft Office文档属性的功能。HPSF代表“文档摘要信息流”,是一个二进制格式,用于存储Office文档的元数据信息,比如作者、标题、主题、关键字、类别等等。

  • org.apache.poi.hssf负责处理HSSF格式的Excel文档。HSSF即“Horrible Spreadsheet Format”,是Excel二进制文件格式的一种。该包包含了一系列类,可以读取、创建、修改和写入HSSF格式的Excel文件,例如HSSFWorkbook、HSSFSheet、HSSFRow和HSSFCell等。通过使用org.apache.poi.hssf包,Java开发人员可以在应用程序中使用HSSF格式的Excel文件进行数据处理和导入导出操作。

  • org.apache.poi.poifs负责处理OLE 2 Compound Document格式的文件,包括Excel文件、Word文件、PowerPoint文件等。OLE 2 Compound Document是微软公司开发的一种文件格式,它可以将多个文件组合成一个文件,其中包括存储数据的流和存储元数据的属性表。
    org.apache.poi.poifs包中包含了一些类和接口,可以读取、创建、修改和写入OLE 2 Compound Document格式的文件,例如POIFSFileSystem、POIFSWriter、DocumentEntry、DirectoryEntry等。开发人员可以使用这些类和接口来操作Excel、Word等文件格式,例如读取、写入、创建、修改、删除文件,以及查找文件等操作。



http://www.lryc.cn/news/253692.html

相关文章:

  • 麒麟v10 数据盘初始化 gpt分区
  • php时间和centos时间不一致
  • 软件工程 复习笔记
  • SpringBoot_02
  • 实验报告-实验四(时序系统实验)
  • PHP+ajax+layui实现双重列表的动态绑定
  • 菜鸟学习日记(python)——条件控制
  • RabbitMQ 笔记
  • DNS协议(DNS规范、DNS报文、DNS智能选路)
  • Python基础知识-变量、数据类型(整型、浮点型、字符类型、布尔类型)详解
  • 信息化,数字化,智能化是3种不同概念吗?与机械化,自动化矛盾吗?
  • C# WPF上位机开发(倒计时软件)
  • Mysql timestamp和datetime区别
  • 新手村之SQL——分组与子查询
  • 【hacker送书第9期】算法训练营(入门篇)
  • 微服务链路追踪组件SkyWalking实战
  • ubuntu 更换国内镜像
  • 树模型与深度模型对比
  • 测试类运行失败:TestEngine with ID ‘junit-jupiter‘ failed to discover tests
  • nodejs使用node-cron实现定时任务功能
  • 【1day】蓝凌OA 系统datajson.js接口远程命令执行漏洞学习
  • ABCDE类网络的划分及保留网段
  • 营销系统规则引擎
  • 【Linux】命令行参数
  • 【信息安全】-个人敏感信息、个人信息、个人金融信息
  • 海外服务器和国内服务器有什么样的区别呢
  • 电脑屏幕亮度怎么调?学会4个方法,轻松调节亮度!
  • 微信小程序之猜数字和猜拳小游戏
  • CETN01 - How to Use Cloud Classroom
  • 安卓8预装可卸载应用