0
我想解析一個使用Apache poi或docx4j的docx文件,但我需要逐行的文本以便按原樣存儲它。儘管我沒有設法找到實現該方法的方法,而不是段落文本。你能給我提供一個文檔,鏈接,解決方案或任何可以幫助我,因爲我沒有找到任何可以給我一個實際的解決方案。在Java中逐行讀取docx文件
在此先感謝!
我想解析一個使用Apache poi或docx4j的docx文件,但我需要逐行的文本以便按原樣存儲它。儘管我沒有設法找到實現該方法的方法,而不是段落文本。你能給我提供一個文檔,鏈接,解決方案或任何可以幫助我,因爲我沒有找到任何可以給我一個實際的解決方案。在Java中逐行讀取docx文件
在此先感謝!
使用DOCX4J,您可以打印使用此代碼每DOCX文本ellements,也許它可能是有用的,以你的目的:
public static void main(String[] args) throws Exception{
TestPrintLines test = new TestPrintLines();
String inputfilepath = System.getProperty("user.dir") + "/";
File file = new File(inputfilepath+"yourFile.docx");
WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load(file);
List<Object> texts= getAllelementObjects(wordMLPackage.getMainDocumentPart(),Text.class);
test.printLines(texts);
}
static public List<Object> getAllelementObjects(Object obj,Class<?> toSearch) {
List<Object> result = new ArrayList<Object>();
if (obj instanceof JAXBElement)
obj = ((JAXBElement<?>) obj).getValue();
if (obj.getClass().equals(toSearch))
result.add(obj);
else if (obj instanceof ContentAccessor) {
List<?> children = ((ContentAccessor) obj).getContent();
for (Object child : children) {
result.addAll(getAllelementObjects(child, toSearch));
}
}
return result;
}
static public void printLines(List<Object> objectsList){
for(int i = 0; i<objectsList.size(); i++) {
Object text = objectsList.get(i);
Text textElement = (Text) text;
System.out.println(textElement.getValue());
}
}
我覺得這是你的問題的一個概念性問題。 Word文檔中的換行符取決於實際的佈局(頁面大小,字體大小和類型等)。也就是說,一段文字可能被所有圖書館視爲單一文本行。而且我實際上看不到任何選擇(除了渲染文檔並執行一些OCR或類似的操作)。 – dpr
也許你可能會一行一行地分享你試圖實現的解析,所以有人可能會提供另一種解決方案。 – Tom