我正在嘗試使用poi-scratchpad-3.8(HWPF)讀取Microsoft Word 2003文檔(.doc)。我需要逐字讀取文件,或逐字讀取文件。無論哪種方式都適合我需要的。一旦我閱讀了字符或單詞,我需要獲取應用於單詞/字符的樣式名稱。所以,問題是,在閱讀.doc文件時,如何獲得用於單詞或字符的樣式名稱?Java Apache POI讀取Word(.doc)文件並獲取使用的命名樣式
編輯
我加入,我曾經嘗試這樣的代碼。如果有人想嘗試這個,祝你好運。
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());
}
}
嗨,你編輯的代碼與我的文檔一起工作。但我想檢測突出顯示的文字。你有什麼想法如何做到這一點?我GOOGLE了很多,但無法找到任何線索。提前致謝 ! – Seynorth
@Seynorth剛開始探索這個東西,所以這可能沒有幫助......但有一種CharacterRun方法稱爲「getHighlightedColor」...試過了嗎? –