Apache POI 低版本升级到5.x

在 Apache POI 的较新版本中,许多旧的 API 已被弃用或移除,取而代之的是更现代、更规范的 API。以下是关于 POI 升级后需要进行的常见替换的总结:

1. 替换 HSSFCellStyle 和 XSSFCellStyle

旧代码:

> HSSFCellStyle style = workbook.createCellStyle();
> style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
> style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
> style.setBorderBottom((short) 1);
> style.setFillForegroundColor(HSSFColor.RED.index);
> style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);

新代码:

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.VerticalAlignment;
import org.apache.poi.ss.usermodel.BorderStyle;
import org.apache.poi.ss.usermodel.FillPatternType;
import org.apache.poi.ss.usermodel.IndexedColors;

CellStyle style = workbook.createCellStyle();
style.setAlignment(HorizontalAlignment.CENTER); // 居中对齐
style.setVerticalAlignment(VerticalAlignment.CENTER); // 垂直居中对齐
style.setBorderBottom(BorderStyle.THIN); // 细边框
style.setFillForegroundColor(IndexedColors.RED.getIndex()); // 红色
style.setFillPattern(FillPatternType.SOLID_FOREGROUND); // 纯色填充

2. 替换 HSSFFont 和 XSSFFont

旧代码:

HSSFFont font = workbook.createFont();
font.setFontName("微软雅黑");
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
font.setFontHeightInPoints((short) 14);

新代码:

import org.apache.poi.ss.usermodel.*;

Font font = workbook.createFont();
font.setFontName("微软雅黑");
font.setBold(true); // 加粗
font.setFontHeightInPoints((short) 14); // 字体大小

3. 替换 HSSFColor

旧代码:

style.setFillForegroundColor(HSSFColor.RED.index);

新代码:

import org.apache.poi.ss.usermodel.IndexedColors;

style.setFillForegroundColor(IndexedColors.RED.getIndex());

4. 替换 Cell.CELL_TYPE_*

旧代码:

if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
    // 处理数值
}

新代码:

import org.apache.poi.ss.usermodel.CellType;

if (cell.getCellType() == CellType.NUMERIC) {
    // 处理数值
}

5. 替换 Region

旧代码:

Region region = new Region(0, (short) 0, 1, (short) 1);
sheet.addMergedRegion(region);

新代码:

import org.apache.poi.ss.util.CellRangeAddress;

CellRangeAddress cellRangeAddress = new CellRangeAddress(0, 1, 0, 1);
sheet.addMergedRegion(cellRangeAddress);

6. 替换 ClientAnchor.MOVE_AND_RESIZE

旧代码:

anchor.setAnchorType(ClientAnchor.MOVE_AND_RESIZE);

新代码:

import org.apache.poi.ss.usermodel.ClientAnchor;

anchor.setAnchorType(ClientAnchor.AnchorType.MOVE_AND_RESIZE);

7. 替换 XSSFColor

旧代码:

XSSFColor color = new XSSFColor(new Color(0xdf, 0x56, 0x40));

新代码:

import org.apache.poi.xssf.usermodel.XSSFColor;
import java.awt.Color;

XSSFColor color = new XSSFColor(new Color(0xdf, 0x56, 0x40), null);

8. 替换 HSSFDateUtil

旧代码:

import org.apache.poi.hssf.usermodel.HSSFDateUtil;

if (HSSFDateUtil.isCellDateFormatted(cell)) {
    // 处理日期
}

新代码:

import org.apache.poi.ss.usermodel.DateUtil;

if (DateUtil.isCellDateFormatted(cell)) {
    // 处理日期
}

9. 替换 POIXMLDocument

旧代码:

import org.apache.poi.POIXMLDocument;

POIXMLDocument document = POIXMLDocument.open("example.xlsx");

新代码:

import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileInputStream;
import java.io.IOException;

try (FileInputStream file = new FileInputStream("example.xlsx")) {
    XSSFWorkbook workbook = new XSSFWorkbook(file);
    // 处理工作簿
} catch (IOException e) {
    e.printStackTrace();
}

10. 替换 CTP.Factory.newInstance()

旧代码:

CTP ctp = CTP.Factory.newInstance();
XWPFParagraph paragraph = new XWPFParagraph(ctp, null);

新代码:

import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;

XWPFDocument document = new XWPFDocument();
XWPFParagraph paragraph = document.createParagraph();

总结
使用 CellType 枚举替代 Cell.CELL_TYPE_*。

使用 HorizontalAlignment 和 VerticalAlignment 枚举替代 short 类型的对齐参数。

使用 IndexedColors 替代 HSSFColor。

使用 CellRangeAddress 替代 Region。

使用 XSSFColor.from(Color) 替代 new XSSFColor(Color)。

使用 DateUtil 替代 HSSFDateUtil。

使用 XWPFDocument 和 XWPFParagraph 替代 CTP.Factory.newInstance()。

确保使用较新的 POI 版本(如 5.x 或更高版本),并更新 Maven 或 Gradle 依赖:

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>5.2.3</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>5.2.3</version>
</dependency>
注:下文中的 *** 代表文件名中的版本号。 # 【poi-***.jar中文文档.zip】 中包含: 中文文档:【poi-***-javadoc-API文档-中文(简体)版.zip】 jar包下载地址:【poi-***.jar下载地址(官方地址+国内镜像地址).txt】 Maven依赖:【poi-***.jar Maven依赖信息(可用于项目pom.xml).txt】 Gradle依赖:【poi-***.jar Gradle依赖信息(可用于项目build.gradle).txt】 源代码下载地址:【poi-***-sources.jar下载地址(官方地址+国内镜像地址).txt】 # 本文件关键字: poi-***.jar中文文档.zip,java,poi-***.jar,org.apache.poi,poi,***,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,apache,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压 【poi-***.jar中文文档.zip】,再解压其中的 【poi-***-javadoc-API文档-中文(简体)版.zip】,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件; # Maven依赖: ``` <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>***</version> </dependency> ``` # Gradle依赖: ``` Gradle: implementation group: &#39;org.apache.poi&#39;, name: &#39;poi&#39;, version: &#39;***&#39; Gradle (Short): implementation &#39;org.apache.poi:poi:***&#39; Gradle (Kotlin): implementation("org.apache.poi:poi:***") ``` # 含有的 Java package(包)(此处仅列举3个): ``` org.apache.poi org.apache.poi.common org.apache.poi.common.usermodel ...... ``` # 含有的 Java class(类)(此处仅列举3个): ``` org.apache.poi.EmptyFileException org.apache.poi.EncryptedDocumentException org.apache.poi.OldFileFormatException ...... ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值