Ich habe die Lösung gefunden, die ich als Kommentar an der Spitze brauchte, war durch das Dokument und Blöcke Abschnitt des Word-Dokuments zu bekommen.
die Informationen verwenden, auf der nächsten Seite
APACHE SVN TestXWPFSDT
Was sie tut, ist durch das Dokument alle Abschnitte zu retten.
Der Code in meinem Projekt verwendet wurde, war gut
public class decodeWord {
public static void main(String[] args) {
FileInputStream fis = null;
try {
fis = new FileInputStream("/WORKSPACE/TestDoc.docx");
XWPFDocument xdoc = new XWPFDocument(OPCPackage.open(fis));
List<AbstractXWPFSDT> sdts = extractAllSDTs(xdoc);
for (AbstractXWPFSDT sdt : sdts) {
System.out.println(sdt.getTag() + " " + sdt.getContent().getText());
}
} catch (Exception e) {
e.printStackTrace();
}
}
private static List<AbstractXWPFSDT> extractAllSDTs(XWPFDocument doc) {
List<AbstractXWPFSDT> sdts = new ArrayList<AbstractXWPFSDT>();
List<XWPFHeader> headers = doc.getHeaderList();
for (XWPFHeader header : headers) {
sdts.addAll(extractSDTsFromBodyElements(header.getBodyElements()));
}
sdts.addAll(extractSDTsFromBodyElements(doc.getBodyElements()));
List<XWPFFooter> footers = doc.getFooterList();
for (XWPFFooter footer : footers) {
sdts.addAll(extractSDTsFromBodyElements(footer.getBodyElements()));
}
for (XWPFFootnote footnote : doc.getFootnotes()) {
sdts.addAll(extractSDTsFromBodyElements(footnote.getBodyElements()));
}
return sdts;
}
private static List<AbstractXWPFSDT> extractSDTsFromBodyElements(List<IBodyElement> elements) {
List<AbstractXWPFSDT> sdts = new ArrayList<AbstractXWPFSDT>();
for (IBodyElement e : elements) {
if (e instanceof XWPFSDT) {
XWPFSDT sdt = (XWPFSDT) e;
sdts.add(sdt);
} else if (e instanceof XWPFParagraph) {
XWPFParagraph p = (XWPFParagraph) e;
for (IRunElement e2 : p.getIRuns()) {
if (e2 instanceof XWPFSDT) {
XWPFSDT sdt = (XWPFSDT) e2;
sdts.add(sdt);
}
}
} else if (e instanceof XWPFTable) {
XWPFTable table = (XWPFTable) e;
sdts.addAll(extractSDTsFromTable(table));
}
}
return sdts;
}
private static List<AbstractXWPFSDT> extractSDTsFromTable(XWPFTable table) {
List<AbstractXWPFSDT> sdts = new ArrayList<AbstractXWPFSDT>();
for (XWPFTableRow r : table.getRows()) {
for (ICell c : r.getTableICells()) {
if (c instanceof XWPFSDTCell) {
sdts.add((XWPFSDTCell) c);
} else if (c instanceof XWPFTableCell) {
sdts.addAll(extractSDTsFromBodyElements(((XWPFTableCell) c).getBodyElements()));
}
}
}
return sdts;
}
}
Welches Format sind mit dem Sie arbeiten - '.doc' (HWPF) oder' .docx' (XWPF)? – Gagravarr
ich benutze .docx (XWPF) –
Bitte beschreiben Sie, was Sie versucht haben oder wie weit Sie in den Code hineingekommen sind und wo Sie stecken geblieben sind, damit die Leute darauf aufbauen können, wenn Sie antworten. – centic