【问题标题】:POI - ZIP entry size is too largePOI - ZIP 条目太大
【发布时间】:2022-04-29 05:52:19
【问题描述】:

我使用 JXLS 创建我的工作簿。 JXLS 在下面使用 POI。要创建工作簿,JXLS 需要文件或输入流。

通过文件对象,我得到了我想要的工作簿。但是,使用流时我收到错误 ZIP 条目大小太大

JXLS 库使用

WorkbookFactory.create()

创建工作簿的方法。所以,我尝试了 ZipStream 和 PushbackStream;没有帮助。 我能够从我的 Junit 运行相同的代码。

我阅读了下面的帖子。 Why am I getting exception "IOException: ZIP entry size is too large" when trying to open an Excel file using Apache POI?.

帖子中的解决方案是 Maven 中的更改。但是,这篇文章没有提到 Maven 所做的更改。

你有什么建议吗?

【问题讨论】:

    标签: java excel maven apache-poi jxls


    【解决方案1】:

    我发现了问题。问题是 Maven 忽略了我保存在资源中的文件。所以我添加了如下的资源过滤来包含我的 excel 模板。

    <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
                <excludes>
                    <exclude>**/*.xlsx</exclude>
                </excludes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>false</filtering>
                <includes>
                    <include>**/*.xlsx</include>
                </includes>
            </resource>
    </resources>
    

    【讨论】:

      【解决方案2】:

      对于我的项目,我添加了这些,因此不会压缩 excel 和 word 文档

      <pluginManagement>
          <plugins>
              <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <version>2.6</version>
                  <artifactId>maven-resources-plugin</artifactId>
                  <configuration>
                      <encoding>UTF-8</encoding>
                      <nonFilteredFileExtensions>
                          <nonFilteredFileExtension>xlsx</nonFilteredFileExtension>
                          <nonFilteredFileExtension>docx</nonFilteredFileExtension>
                      </nonFilteredFileExtensions>
                  </configuration>
              </plugin>
          </plugins>
      </pluginManagement>
      

      【讨论】:

        【解决方案3】:

        在我的情况下,问题是由于 Java 正在打开文件

            InputStream fileStream = getClass().getResourceAsStream("path/to/excel/file.xlsx");
            Workbook workbook = new XSSFWorkbook(fileStream);
        

        同时该文件也在 Excel 中打开。我关闭了 Excel,错误消失了。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-08-18
          • 1970-01-01
          • 1970-01-01
          • 2018-04-15
          • 1970-01-01
          • 2017-02-18
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多