Apache POI工作所需的Maven依赖项

36

我想使用Apache POI库来解析excel文件(旧版本和新版本的excel)。因此,我想知道在以下链接中需要包含哪些Apache POI jar包:

http://mvnrepository.com/artifact/org.apache.poi

我发现需要包含很多jar包,它们都是必需的吗?

如果是,最新的稳定版本是什么?它能与微软的Office 2010一起使用吗?

15个回答

65

不用担心,不必包含所有POI的依赖项。 Maven 的传递依赖机制会处理这个问题。正如注明的,你只需要表达对适当的 POI 构件的依赖关系。例如:

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

编辑(更新):我不知道之前的版本,但是为了解决对XSSFWorkbook和org.apache.poi包中其他类的导入,您还需要添加poi-ooxml的依赖项。这些依赖关系将会是:

Edit(UPDATE): 对于之前的版本我不确定,但是为了解决导入 XSSFWorkbook 和 org.apache.poi 包中其它类的问题,你需要额外添加 poi-ooxml 的依赖。以下是需要添加的依赖:

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

1
这不会解决 org.apache.poi.xssf.eventusermodel.XSSFReader, org.apache.poi.xssf.model.SharedStringsTable, org.apache.poi.openxml4j.opc.OPCPackage 的导入问题。 - Muhammad Gelbana
@MuhammadGelbana 对不起,我已经远离这个领域好几年了。请更新答案并进行必要的编辑。 - Sri Sankaran

9

对于Excel编写器,您可能需要以下内容:

            <dependency>
              <groupId>org.apache.poi</groupId>
              <artifactId>poi</artifactId>
              <version>3.10-FINAL</version>
           </dependency>


        <dependency>
             <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>${apache.poi.version}</version>
       </dependency>

3

3
以下方法对我有效:
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>3.16</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>3.16</version>
    </dependency>

应该使用相同版本的“poi”和“poi-ooxml”。 - Ripon Al Wasim

2
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>3.10-FINAL</version>
    </dependency>

为什么你建议使用旧版本?最新的稳定版本3.11肯定更好吧? - Gagravarr

2

我使用了以下依赖项。如果您正在使用Selenium,则最好像下面这样全部使用它们。否则,您将看到一些错误,然后进行研究并添加更多依赖项。

<dependency>
                 <groupId>org.apache.poi</groupId>
                 <artifactId>poi</artifactId>
                 <version>3.9</version>
          </dependency>
          <dependency>
                 <groupId>org.apache.poi</groupId>
                 <artifactId>poi-ooxml</artifactId>
                 <version>3.9</version>
          </dependency>
          <dependency>
                 <groupId>org.apache.poi</groupId>
                 <artifactId>poi-ooxml-schemas</artifactId>
                 <version>3.9</version>
          </dependency>
          <dependency>
                 <groupId>org.apache.poi</groupId>
                 <artifactId>poi-scratchpad</artifactId>
                 <version>3.9</version>
          </dependency>
          <dependency>
                 <groupId>org.apache.poi</groupId>
                 <artifactId>ooxml-schemas</artifactId>
                 <version>1.1</version>
          </dependency>

          <dependency>
                 <groupId>org.apache.poi</groupId>
                 <artifactId>openxml4j</artifactId>
                 <version>1.0-beta</version>
          </dependency>

3
为什么建议人们使用相当古老的Apache POI 3.9?这些天openxml4j依赖项似乎不再需要了。 - Gagravarr
无法使Eclipse中的Maven识别任何高于3.9版本的内容。通常它可以完成工作。此外,为了解决库的所有依赖项而添加6-7个依赖项是荒谬的。 - Leo

1

您的应用程序需要多个jar文件才能与APACHE POI一起使用。

JAR文件列表:

  1. poi-4.1.0
  2. poi-ooxml-4.1.0
  3. commons-collections4-4.3
  4. commons-compress-1.18
  5. xmlbeans-3.1.0
  6. poi-ooxml-schemas-3.9
  7. dom4j-1.6.1

1

Apache POI主要有两个库:

  1. 用于处理Excel '97-2007文件格式(.xls)的HSSF工作簿。
  2. 用于处理Excel 2007 OOXML(.xlsx)的XSSF工作簿。

您可以根据需要添加任何一个。区别可以在这里找到。

<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>5.2.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>5.2.2</version>
</dependency>

0

如果您没有使用Maven,则需要以下库:

  • poi
  • poi-ooxml
  • xmlbeans
  • dom4j
  • poi-ooxml-schemas
  • stax-api
  • ooxml-schemas

1
最新版本的Apache POI(3.11)不需要stax-api jar和dom4j jar,因此这并不总是正确的。 - Gagravarr

0
自从POI 5.0.0版本以来,进行了一些维护:
根据官方FAQ:
  • poi-ooxml-full以前被称为ooxml-schemas
  • poi-ooxml-lite以前被称为poi-ooxml-schemas
根据官方组件列表
  • poi-ooxml现在透明地需要poi-ooxml-lite
如@mustafa918所指出的,您应该参考 https://poi.apache.org/components/index.html#components查找所需的依赖项。要使用XLS,请只使用poi即可;对于XLSX,您需要添加poi-ooxml

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接