代码之家  ›  专栏  ›  技术社区  ›  eftshift0

使用密码时出现Java POI异常:未能将part/xl/styles.xml保存到流中

  •  0
  • eftshift0  · 技术社区  · 5 年前

    Caused by: org.apache.poi.openxml4j.exceptions.OpenXML4JException: The part /xl/styles.xml failed to be saved in the stream with marshaller org.apache.poi.openxml4j.opc.internal.marshallers.DefaultMarshaller@852ef8d
    at org.apache.poi.openxml4j.opc.ZipPackage.saveImpl(ZipPackage.java:543) ~[poi-ooxml-4.1.2.jar:4.1.2]
    

    我读到过,这是因为其中一个文件被多次打开。事实并非如此。这个过程有两个部分。有一个创建一个xlsx文件,然后有另一个启动来加密它。我把它们分开,这样我就可以一个接一个地分别测试它们。运行第一步,我创建xlsx文件,单元测试完成,我不运行其他任何东西。然后,我在一个单独的测试会话上运行第二步(以确保没有任何东西保持上一个文件处于打开状态),并得到该异常。

    0 回复  |  直到 5 年前
        1
  •  0
  •   eftshift0    5 年前

    首先,发生异常 加密时 /xl/styles.xml 太大了。加密是在 xlsx文件,但它有一个非常大的styles.xml文件。

    第二:我可以通过重用样式来跳过这个问题,而不是为我在服务器上创建的单元格创建新的样式 如果原始文件创建得很好,为什么加密会失败?

    感谢@AxelRichter指出了正确的方向。