title: Java Apache POI read Word (.doc) file and get named styles used
body: <p>I am trying to read a Microsoft Word 2003 Document (.doc) using poi-scratchpad-3.8 (HWPF).  I need to either read the file word by word, or character by character.  Either way is fine for what I need.  Once I have read either a character or word, I need to get the style name that is applied to the word/character.  So, the question is, how do I get the style name used for a word or character when reading the .doc file?</p>
  
  <p><strong>EDIT</strong></p>
  
  <p>I am adding the code that I used to attempt this.  If anyone wants to attempt this, good luck.</p>
  
  <pre><code>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 &lt; 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 &lt; range.numParagraphs(); i++) {
          Paragraph p = range.getParagraph(i);
  
          // check if style index is greater than total number of styles
          if (wdDoc.getStyleSheet().numStyles() &gt; p.getStyleIndex()) {
              System.out.println(wdDoc.getStyleSheet().numStyles() + " -&gt; " + p.getStyleIndex());
              StyleDescription style = wdDoc.getStyleSheet().getStyleDescription(p.getStyleIndex());
              String styleName = style.getName();
              // write style name and associated text
              System.out.println(styleName + " -&gt; " + p.text());
          } else {
              System.out.println("\n" + wdDoc.getStyleSheet().numStyles() + " ----&gt; " + p.getStyleIndex());
          }
      }
  </code></pre>