Apache POI 升级版本

以下是在不使用Maven等库管理工具的情况下进行Apache POI版本升级的工作备忘录。

只需要提供一个汉语翻译选项:

– 先决条件 jué

    • バージョンアップ前のPOI:3.0.2

 

    • バージョンアップ後のPOI:4.1.2

 

    • javaのバージョン:8

 

    IDE:eclipce(4.4.2)

升级前的版本

这次的处理内容并不是很重要,所以我写了一个简单的程序来读取在Excel中写好的内容并输出到控制台。


import java.io.FileInputStream;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;

public class Test1 {

    public static void main(String[] args) {

        try {
            //Excelのワークブックを読み込みます。
            POIFSFileSystem filein = new POIFSFileSystem
                (new FileInputStream("C:\\poi_test\\test.xls"));
            HSSFWorkbook wb = new HSSFWorkbook(filein);
            //シートから読み込みます。
            HSSFSheet sheet = wb.getSheet("test");
            HSSFRow row = sheet.getRow(0);
            HSSFCell cell = row.getCell((short)0);
            String readText = cell.getStringCellValue();
            //Excelから読み込んだ結果を出力します。
            System.out.println(readText);
            System.out.println("処理が終了しました。");
        } catch (Exception e) {
            System.out.println("処理が失敗しました");
        }
    }
}
image.png
image.png

目前为止,我们已经确认它正常运作。


升级版本

我们将升级POI的版本。

从构建路径中删除旧版本

右键单击eclipse项目 = >构建路径 = >构建路径配置

image.png

因为在现在使用的库版本(3.0.2)中已经记录了路径,所以将这三个都移除。

安装新版本

请从这里下载新版本的POI并进行解压安装,然后将其放置在任意目录下。

让新版本的构建路径通过

再次在eclipse中右键单击项目,选择“构建路径”-“配置构建路径”,然后将新版本的POI构建路径添加进去。
从刚才解压POI的目录中参考以下网站,选择以下4个jar文件。

    • poi-4.1.2.jar

 

    • poi-ooxml-4.1.2.jar

 

    • poi-ooxml-schemas-4.1.2.jar

 

    ooxml-lib\xmlbeans-3.1.0.jar
image.png

确认动作

当运行程序时,会出现构建错误。

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/math3/util/ArithmeticUtils
    at org.apache.poi.poifs.property.RootProperty.setSize(RootProperty.java:59)
    at org.apache.poi.poifs.property.DirectoryProperty.<init>(DirectoryProperty.java:52)
    at org.apache.poi.poifs.property.RootProperty.<init>(RootProperty.java:31)
    at org.apache.poi.poifs.property.PropertyTable.<init>(PropertyTable.java:58)
    at org.apache.poi.poifs.filesystem.POIFSFileSystem.<init>(POIFSFileSystem.java:102)
    at org.apache.poi.poifs.filesystem.POIFSFileSystem.<init>(POIFSFileSystem.java:274)
    at Test1.main(Test1.java:16)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.math3.util.ArithmeticUtils
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 7 more

根据错误消息java.lang.NoClassDefFoundError: org/apache/commons/math3/util/ArithmeticUtils来推测,很可能是缺少了apache库。
让我们检查一下下载的新apache目录。

image.png

在lib文件夹下发现了一个名为commons-math3.jar的文件。
如果将该jar文件添加到构建路径中,问题似乎能够解决。

image.png
image.png

在安装或升级库的时候,我们通常会通过网络收集相关参考信息。然而,网络文章往往只介绍基本内容,我们需要仔细思考是否适用于自己的环境。在这种情况下,只要冷静地查看错误信息,就能知道错误所在,即使遇到不明错误,也要保持冷静,尽量通过搜索错误信息进行处理。

广告
将在 10 秒后关闭
bannerAds