Java Apache POI czytaj plik Word (.doc) i używaj nazwanych stylów
Próbuję odczytać dokument programu Microsoft Word 2003 (.doc) przy użyciu poi-scratchpad-3.8 (HWPF). Muszę albo odczytać słowo plik po słowie, albo znak po znaku. Tak czy inaczej jest w porządku dla tego, czego potrzebuję. Po przeczytaniu znaku lub słowa muszę uzyskać nazwę stylu, która jest stosowana do słowa / znaku. Pytanie brzmi, jak uzyskać nazwę stylu dla słowa lub znaku podczas czytania pliku .doc?
EDYTOWAĆ
Dodaję kod, którego próbowałem użyć. Jeśli ktoś chce spróbować, powodzenia.
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());
}
}