2016-08-05 9 views
0

Wir verwenden Apache POI 3.14, um ein pptx-Dokument aus dem Sling-Inhalt mit dem Bundle org.apache.servicemix.bundles.poi zu generieren.Apache POI + Felix: XSLF-Tabelle ist leer

In einer einfachen eigenständigen Java-App mit Testcode funktioniert es gut.

Wenn wir diesen Code in einem Paket zusammenfassen und ihn für Felix bereitstellen, besteht die generierte Tabelle aus einer einzelnen leeren Zelle.

Ich habe ein paar Posts gefunden, die ein ähnliches Problem beschreiben, einige fragen, ob man poi-ooxml-Schemas durch ooxml-Schemas ersetzen könnte, aber ich frage mich, ob es unser Problem beheben würde, da die Standalone-App mit demselben POI-Paket arbeitet der eine, der für Felix eingesetzt wurde.

der Code Dies verwenden wir:

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)); 
} 

Und das ist das, was in Felix erzeugt wird:

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

Was dieses Problem verursachen könnte, könnte es zu einem Konflikt zwischen Bibliotheken sein? Wie könnte ich es debuggen, um herauszufinden, was in Felix falsch ist?

+0

Guillaume und ich behoben dies ... Ich werde die Lösung bald veröffentlichen (hoffentlich, wenn ich nicht vergessen zu posten ...). Es gibt einen Fehler bei der Behandlung von Klassenladeprogrammen und XML-Beans, was dazu führt, dass die Schemadefinition nicht geladen werden kann. – kiwiwings

Antwort

2

Dies ist ein Classloading Problem und eine Problemumgehung wird in POI 3.16 verfügbar sein - siehe Bugzilla Eintrag #60226

Außerdem möchten Sie vielleicht prüfen #57857 für einen ServiceMix Patch.