Hallo zusammen,
ich möchte gerne Inhalte aus .odt und .odc Dokumenten auslesen bekomme jedoch keine saubere Anzeige des Textes, ich meine Herausgefunden zu haben das dies an der Formatierung liegt so dass man die erst vom Text trennen muss. Das ganze soll wohl mit dem ODF Toolkit funktionieren, ich bekomme es nicht hin.
Was ich gemacht habe, das Toolkit runtergeladen und in die Libary gepackt und versucht anzusprechen. Leider ohne Erfolg.
Was mache ich falsch bzw, ist es der richtige Weg?
Ganz ehrlich, ich habe keine Ahnung und finde auch keine Beispiele die mit diesem Toolkit arbeiten.
Versucht habe ich es mit "Odf" anzusprechen aber da gibt es Fehlermeldungen bzw. kennt er das so nicht, ich kann mir vorstellen das ich vergessen habe einen wesentlichen Teil der Bibliothek zu zufügen.
Die Namen der odf-jars, die du eingebunden hast, enden alle auf javadoc. Ich tippe darauf, dass die jars gar keine Klassen enthalten. Schaue mal an dem Ort, wo du die jars her hast, nach welchen die auf "binary" enden.
Hallo, ich habe meinen Fehler gefunden. Ich habe anscheinend die Dokumentation eingebunden statt der Klassen.
Richtig stq genau das war mein Problem ich habe versucht es anzusprechen aber "TextDocument" wurde nicht erkannt. Jetzt habe ich darauf Zugriff also geht es zum nächsten Schritt
Neuer Versuch, ich habe herausgefunden das die OpenOffice Dokumente in einem Archiv gespeichert sind nun versuche ich diese zu entpacken was zum teil funktioniert doch gibt es Zugriffsprobleme beim Outputstream
Java:
publicstaticvoidmain(String[] args)throwsFileNotFoundException,Exception{String r ="C:\\Users\\ca.martinez\\Desktop\\Projektwoche 2\\Neuer Ordner\\089 Karjalainen GR.odt";String s ="C:\\Users\\ca.martinez\\Desktop\\Beispiel.odt";ZipInputStream zipInputStream =newZipInputStream(newFileInputStream(s));ZipEntry entry = zipInputStream.getNextEntry();while(entry !=null){String outFilename = entry.getName();System.out.println(outFilename);newFile("C:\\Users\\ca.martinez\\Desktop\\zip\\"+ outFilename).mkdirs();OutputStream out =newFileOutputStream("C:\\Users\\ca.martinez\\Desktop\\zip\\"+ outFilename);
entry = zipInputStream.getNextEntry();}
zipInputStream.close();
Die Bibliothek nimmt Dir doch die ganze Arbeit mit dem Entpacken etc… schon ab!
Eine einfache Suche im Netz ergab mehrere Treffer zur Benutzung:
Hier ein "getting started": https://incubator.apache.org/odftoolkit/simple/gettingstartguide.html
Oder etwas tiefergehend: http://langintro.com/odfdom_tutorials/
Manchmal ist es auch einfach schon gut, sich den Quellcode der Bibliothek anzuschauen, damit man nicht mehr herumraten muß; die meisten Klassennamen sind sowieso selbstsprechend
Das mag schon sein, ich verstehe es nicht also mittlerweile bin ich soweit das ich mit ZipFile die Datei entpacke und mit getChildren mir das auch in eine Liste packen kann. Hier hängt es wieder ich bekomme keinen Zugriff auf "table:table" wo meine Daten drin stehen. Stelle ich mich zu doof an oder ist das Projekt einfach nichts für Einsteiger es ist deprimierend.
Java:
publicStringgetText(String fileName)throwsException{TextBuffer=newStringBuffer();ZipFile zipFile =newZipFile(fileName);Enumeration entries = zipFile.entries();ZipEntry entry;while(entries.hasMoreElements()){
entry =(ZipEntry) entries.nextElement();if(entry.getName().equals("Object 1/content.xml")){TextBuffer=newStringBuffer();SAXBuilder sax =newSAXBuilder();Document doc = sax.build(zipFile.getInputStream(entry));Element rootElement = doc.getRootElement();Element e = rootElement.getChild("body");//Element f = e.getChild("office:spreadsheet");//Element g = f.getChild("table:table");//String x = rootElement.getValue();List list = rootElement.getChildren();for(int i =0; i < list.size(); i++){Element node =(Element) list.get(i);System.out.println(node);}//processElement2(rootElement);break;}}System.out.println("The text extracted from the OpenOffice document = "+TextBuffer.toString());returnTextBuffer.toString();}
Bist du sicher, dass der Name des zip entries wirklich "Object 1/content.xml" ist? Ich habe gerade eine ODT angelegt, und sie enthält die Datei "content.xml" in der obersten Ebene der ODT-Datei und nicht in einem Unterverzeichnis.
Offenbar benutzt du jdom. Damit kenne ich mich leider nicht aus. Mir ist aber aufgefallen, dass du bei Aufrufen des Typs
Java:
rootElement.getChild("body")
nur die methode mit einem Stringparameter anwendest und nicht die Methode mit einem Namespace-Parameter, obwohl in meiner Datei alle XML Elemente einen Namespace-Prefix haben.
Mir ist rätselhaft, warum du dir das manuelle Auslesen der Datei antun möchtest, anstatt das odftoolkit zu nehmen.
Hallo Harry,
weil ich es mit odf nicht hinbekommen habe. Die Dokumentation dazu hat mich nicht weitergebracht. Zwar konnte ich wie beschrieben auf den Text zugreifen, jedoch nicht auf den Text in der Tabelle welche im odt eingebunden ist.