代码之家  ›  专栏  ›  技术社区  ›  Guillaume Lucazeau

Apache POI+Felix:XSLF表为空

  •  0
  • Guillaume Lucazeau  · 技术社区  · 8 年前

    我们使用Apache POI 3.14通过捆绑包org.Apache.servicemix.bundles.POI从Sling内容生成pptx文档。

    在一个简单的独立Java应用程序中,通过测试代码,它可以很好地工作。

    当我们将此代码放在一个包中并部署到Felix时,生成的表由一个空单元格组成。

    我发现了一些描述类似问题的帖子,一些帖子要求用ooxml模式替换poi-ooxml模式,但我想知道这是否能解决我们的问题,因为独立应用程序使用的poi捆绑包与Felix部署的相同。

    这是我们使用的代码:

    public static void addTableToSlide(XMLSlideShow ppt, XSLFSlide slide) {
      XSLFTable tbl = slide.createTable(1, 1);
      for (int i = 0; i < 9; i++) {
        XSLFTableRow row = tbl.addRow();
        for (int j = 0; j < 9; j++) {
          row.addCell();
        }
      }
      tbl.setAnchor(new Rectangle2D.Double(50, 50, 450, 300));
    }
    

    这就是Felix中生成的内容:

    <a:graphicData uri="http://schemas.openxmlformats.org/drawingml/2006/table">
      <a:tbl>
        <a:tblPr/>
        <a:tblGrid/>
      </a:tbl>
    </a:graphicData>
    

    是什么导致了这个问题,这可能是图书馆之间的冲突吗?我如何调试它以找出Felix中的问题?

    1 回复  |  直到 8 年前
        1
  •  2
  •   kiwiwings    8 年前

    这是一个类加载问题,POI 3.16中提供了解决方法-请参阅Bugzilla条目 #60226

    此外,您可能需要检查 #57857 用于servicemix修补程序。