七郎's JavaBlog

          草木竹石皆可為劒。至人之用人若鏡,不將不迎,應而不藏,故能勝物而不傷。
          posts - 60, comments - 14, trackbacks - 0, articles - 0

          使用POI提取Word文件的文本內容

          Posted on 2008-06-12 15:48 七郎歸來 閱讀(1461) 評論(0)  編輯  收藏

          使用POI提取Word文件的文本內容

          POI是Apache的一個開源項目,可以到Apache網站下載相應的jar包文件,及其源文件。

          POI提供了提取一些非TXT文本中文本內容的API,比如提取Word,Excel等,使用起來非常方便。

          為了說明POI提起Word文件的方便和簡單,通過提取一個Word文件的文本來,來了解POI API的功能。

          假設在本地磁盤中存在一個Word文件

          E:POIwordJBoss3.0 下配置和部署EJB簡介.doc文件是具有格式的,內容如圖所示:

          下面看看提取它的內容是多么簡單。

          首先從Apache網站上下載POI的相關jar包。

          新建一個測試類:

          package org.shirdrn.word;

          import java.io.File;
          import java.io.FileInputStream;
          import java.io.FileNotFoundException;
          import java.io.IOException;

          import org.apache.poi.hwpf.extractor.WordExtractor;

          public class MyWordExtractor {

          public static void main(String[] args) {
             File file = new File("E:\POI\word\JBoss3.0 下配置和部署EJB簡介.doc");
             try {
              FileInputStream fis = new FileInputStream(file);
              WordExtractor wordExtractor = new WordExtractor(fis);
              System.out.println("【 使用getText()方法提取的Word文件的內容如下所示:】");
              System.out.println(wordExtractor.getText());
             } catch (FileNotFoundException e) {
              e.printStackTrace();
             } catch (IOException e) {
             e.printStackTrace();
          }
          }
          }

          提取Word文件的文本內容,打印到控制臺上,如下所示:

          使用WordExtractor類的getTextFromPieces()方法提取:

          wordExtractor.getTextFromPieces();

          結果和上面是一樣的。

          WordExtractor類還有一個可以提取Word文件的各個段落的方法getParagraphText(),返回一個String[]數組,數組中每個元素為一個段的文本內容。

          這里,對Word文件中換行也看成是一個段,測試如下:

          package org.shirdrn.word;

          import java.io.File;
          import java.io.FileInputStream;
          import java.io.FileNotFoundException;
          import java.io.IOException;

          import org.apache.poi.hwpf.extractor.WordExtractor;

          public class MyWordExtractor {

          public static void main(String[] args) {
             File file = new File("E:\POI\word\JBoss3.0 下配置和部署EJB簡介.doc");
             try {
              FileInputStream fis = new FileInputStream(file);
              WordExtractor wordExtractor = new WordExtractor(fis);
              System.out.println("【 使用getText()方法提取的Word文件的內容如下所示:】");
              String[] paragraph = wordExtractor.getParagraphText();
              System.out.println("該Word文件共有"+paragraph.length+"段。");
              for(int i=0;i
               System.out.println("< 第 "+(i+1)+" 段的內容為 >");
               System.out.println(paragraph[i]);
              }
             } catch (FileNotFoundException e) {
              e.printStackTrace();
             } catch (IOException e) {
             e.printStackTrace();
          }
          }
          }

          提取Word文件的文本內容,打印到控制臺上,如下所示:

          從上面的Word文件可以看出,最后一行是Word文件的一個換行符,使用WordExtractor提取時,也把它默認成為一個段,因為一個段結束后應該有一個回車換行符。

          如果有多個Word文件,而且放在不同的目錄下,要提取它們的文本內容,可以實現一個遞歸的函數,通過深度遍歷,為每一個Word文件進行提取。

          如果需要,可以將提取到的Word文件的文本內容輸出到本地磁盤中,比如以txt記事本的根式保存。

          從上面可以看出,提取Word文件的文本內容,實際上是將Word文件的格式去掉了,獲取到文本的內容。


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 高碑店市| 宜黄县| 依安县| 北宁市| 柳林县| 武城县| 东山县| 岳阳县| 贵南县| 灵武市| 三都| 新巴尔虎右旗| 马边| 天峻县| 策勒县| 灵寿县| 通海县| 喜德县| 沂南县| 安平县| 昌宁县| 山东省| 牙克石市| 黄大仙区| 郁南县| 肥乡县| 招远市| 屯门区| 莒南县| 府谷县| 文水县| 娄烦县| 伊川县| 周至县| 大化| 佛教| 塔河县| 望奎县| 北安市| 勃利县| 微山县|