Java Apache POI liest die Word-Datei (.doc) und ruft die verwendeten benannten Stile ab

Ich versuche, ein Microsoft Word 2003-Dokument (.doc) mit poi-scratchpad-3.8 (HWPF) zu lesen. Ich muss die Datei entweder Wort für Wort oder Zeichen für Zeichen lesen. So oder so ist in Ordnung für das, was ich brauche. Sobald ich ein Zeichen oder ein Wort gelesen habe, muss ich den Namen des Stils ermitteln, der auf das Wort / Zeichen angewendet wird. Die Frage ist also, wie ich beim Lesen der DOC-Datei den für ein Wort oder ein Zeichen verwendeten Stilnamen erhalte.

BEARBEITEN

Ich füge den Code hinzu, mit dem ich das versucht habe. Wenn jemand dies versuchen möchte, viel Glück.

private void processDoc(String path) throws Exception {
    System.out.println(path);
    POIFSFileSystem fis = new POIFSFileSystem(new FileInputStream(path));
    HWPFDocument wdDoc = new HWPFDocument(fis);

    // list all style names and indexes in stylesheet
    for (int j = 0; j < wdDoc.getStyleSheet().numStyles(); j++) {
        if (wdDoc.getStyleSheet().getStyleDescription(j) != null) {
            System.out.println(j + ": " + wdDoc.getStyleSheet().getStyleDescription(j).getName());
        } else {
            // getStyleDescription returned null
            System.out.println(j + ": " + null);
        }
    }

    // set range for entire document
    Range range = wdDoc.getRange();

    // loop through all paragraphs in range
    for (int i = 0; i < range.numParagraphs(); i++) {
        Paragraph p = range.getParagraph(i);

        // check if style index is greater than total number of styles
        if (wdDoc.getStyleSheet().numStyles() > p.getStyleIndex()) {
            System.out.println(wdDoc.getStyleSheet().numStyles() + " -> " + p.getStyleIndex());
            StyleDescription style = wdDoc.getStyleSheet().getStyleDescription(p.getStyleIndex());
            String styleName = style.getName();
            // write style name and associated text
            System.out.println(styleName + " -> " + p.text());
        } else {
            System.out.println("\n" + wdDoc.getStyleSheet().numStyles() + " ----> " + p.getStyleIndex());
        }
    }

Antworten auf die Frage(1)

Ihre Antwort auf die Frage