七郎'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文件的格式去掉了,獲取到文本的內容。


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


          網站導航:
           
          主站蜘蛛池模板: 都匀市| 嵩明县| 铁力市| 沽源县| 和政县| 确山县| 广安市| 应用必备| 凉城县| 濮阳县| 海南省| 德令哈市| 准格尔旗| 高唐县| 浦北县| 临洮县| 镇坪县| 巩留县| 新乐市| 广南县| 崇左市| 安徽省| 措勤县| 驻马店市| 偏关县| 龙里县| 南昌市| 湟源县| 溆浦县| 神木县| 巨野县| 祁连县| 武乡县| 莆田市| 华阴市| 渭南市| 尼木县| 成都市| 于田县| 白河县| 贵德县|