0
我有一個基於模板創建的Word文檔(.docx
)。它有4個部分:標題,文件類型,標識和簽名。使用Apache POI從Word文檔中讀取部分
我一直在尋找一種方法來閱讀使用Apache POI的XWPF的部分。有什麼建議?
我有一個基於模板創建的Word文檔(.docx
)。它有4個部分:標題,文件類型,標識和簽名。使用Apache POI從Word文檔中讀取部分
我一直在尋找一種方法來閱讀使用Apache POI的XWPF的部分。有什麼建議?
我已經找到了解決方案,我需要作爲頂部的註釋是通過文檔並獲取word文檔的塊部分。
使用下一頁
它的作用是通過文檔拯救所有部分中提供的信息。
在我的項目中使用的代碼是很好
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;
}
}
與Google合作的哪種格式 - '.doc'(HWPF)或'.docx'(XWPF)? – Gagravarr
我使用.docx(XWPF) –
請描述您嘗試了什麼,或者您在代碼中擁有多少距離,以及您遇到困難的位置,以便人們在回答時可以基於此。 – centic