Java解析word(2003/2007)


現在microsoft wordにはいくつかのバージョン97、2003、2007があり、この3つのバージョンのデータ格納フォーマットにはかなりの違いがありますが、現在97は基本的に市場を脱退しており、このバージョンを使用する人はほとんどいません.だから、私たちのシステムでは2003バージョンと2007バージョンしか考えていません.wordの文字内容を読み取ることができることを要求しているだけです.その中の文字スタイルや画像などの情報は無視でき、wordファイルを直接操作する必要もないので、apacheのPOIで読み取ることを選びました.
    2003バージョン(.doc)のwordファイルを読み込むのは比較的簡単で、poi-3.5-beta 6-20090622.jarとpoi-scratchpad-3.5-beta 6-20090622.jarの2つのjarパッケージだけでいいですが、2007バージョン(.docx)は面倒が多く、私が言ったこの面倒は私たちがコードを書くときに煩わしいのではなく、導入するjarパッケージが比較的多いのです.1.openxml 4 j-bin-beta.jar 2.poi-3.5-beta 6-20090622.jar 3.poi-ooxml-3.5-beta 6-20090622.jar 4.dom 4 j-1.6.1.jar 5.geronimo-stax-api_1.0_spec-1.0.jar 6.ooxml-schemas-1.0.jar 7.xmlbeans-2.3.0.jarそのうち4-7はpoi-ooxml-3.5-beta 6-20090622.jarに依存するjarパケット(poi-bin-3.5-beta 6-20090622.tar.gzのooxml-libディレクトリで入手可能).
    コードを書く前に必要なjarパッケージをダウンロードしなければなりません.poi-bin-3.5-beta 6-20090622.tar.gzとopenxml 4 j-bin-beta.jarをダウンロードすればいいです.必要な他のjarパッケージはpoi-bin-3.5-beta 6-20090622.tar.gzで見つけることができます.以下はダウンロードアドレスです.poi-bin-3.5-beta 6-20090622.tar.gz:http://apache.etoak.com/poi/dev/bin/poi-bin-3.5-beta6-20090622.tar.gz openxml 4 j-bin-beta.jar:http://mirror.optus.net/sourceforge/o/op/openxml4j/openxml4j-bin-beta.jar    下はwordファイルを読み取るJavaコードです.注意すべきは、POIがwordファイルを読み取るときにwordファイルの画像情報を読み取ることはありません.また、2007版のword(.docx)については、wordファイルに表があれば、すべての表のデータが取り出した文字列の最後に読み出されます.
view plaincopy to clipboardprint?
import java.io.File;   
import java.io.FileInputStream;   
import java.io.InputStream;   

import org.apache.poi.POIXMLDocument;   
import org.apache.poi.POIXMLTextExtractor;   
import org.apache.poi.hwpf.extractor.WordExtractor;   
import org.apache.poi.openxml4j.opc.OPCPackage;   
import org.apache.poi.xwpf.extractor.XWPFWordExtractor;   

/** 
* POI    word 2003   word 2007          <br /> 
* @createDate 2009-07-25 
* @author Carl He 
*/ 
public class Test {   
    public static void main(String[] args) {   
        try {   
            //word 2003:           
              InputStream is = new FileInputStream(new File("c:\\files\\2003.doc"));   
            WordExtractor ex = new WordExtractor(is);   
            String text2003 = ex.getText();   
            System.out.println(text2003);   

            //word 2007        ,                    
            OPCPackage opcPackage = POIXMLDocument.openPackage("c:\\files\\2007.docx");   
            POIXMLTextExtractor extractor = new XWPFWordExtractor(opcPackage);   
            String text2007 = extractor.getText();   
            System.out.println(text2007);   
               
        } catch (Exception e) {   
            e.printStackTrace();   
        }   
    }   
} 
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

import org.apache.poi.POIXMLDocument;
import org.apache.poi.POIXMLTextExtractor;
import org.apache.poi.hwpf.extractor.WordExtractor;
import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.xwpf.extractor.XWPFWordExtractor;

/**
* POI    word 2003   word 2007          <br />
* @createDate 2009-07-25
* @author Carl He
*/
public class Test {
    public static void main(String[] args) {
        try {
            //word 2003:        
              InputStream is = new FileInputStream(new File("c:\\files\\2003.doc"));
            WordExtractor ex = new WordExtractor(is);
            String text2003 = ex.getText();
            System.out.println(text2003);

            //word 2007        ,                 
            OPCPackage opcPackage = POIXMLDocument.openPackage("c:\\files\\2007.docx");
            POIXMLTextExtractor extractor = new XWPFWordExtractor(opcPackage);
            String text2007 = extractor.getText();
            System.out.println(text2007);
   
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

 新しい、細分化された、完璧なソリューションを発見しました---Apache Tika  詳細は、http://eric-hou.iteye.com/blog/737629