2013-07-12 76 views
7

docおよびdocxファイルを読み込もうとしています。ここにコードされています。私は、DOCXファイルを読みたいときに例外をPOI APIを使用してJavaでdocおよびdocxファイルを読む方法

static String distination="E:\\   
    static String docFileName="Requirements.docx"; 
public static void main(String[] args) throws FileNotFoundException, IOException { 
    // TODO code application logic here 
    ReadFile rf= new ReadFile(); 
    rf.ReadFileParagraph(distination+docFileName); 


    } 
    public void ReadFileParagraph(String path) throws FileNotFoundException, IOException 
    { 
     FileInputStream fis; 
     File file = new File(path); 
     fis=new FileInputStream(file.getAbsolutePath()); 
      String filename=file.getName(); 

     String fileExtension=fileExtension(path); 
     if(fileExtension.equals("doc")) 
     { 
      HWPFDocument document=new HWPFDocument(fis); 
      WordExtractor DocExtractor = new WordExtractor(document); 
      ReadDocFile(DocExtractor,filename); 

     } 
     else if(fileExtension.equals("docx")) 
     { 

      XWPFDocument documentX = new XWPFDocument(fis);    
      List<XWPFParagraph> pera =documentX.getParagraphs(); 
      ReadDocXFile(pera,filename); 
     } 
     else 
     { 
      System.out.println("format does not match"); 
     } 

    } 
    public void ReadDocFile(WordExtractor extractor,String filename) 
    { 

     for (String paragraph : extractor.getParagraphText()) { 
      System.out.println("Peragraph: "+paragraph); 
     } 
    } 
    public void ReadDocXFile(List<XWPFParagraph> extractor,String filename) 
    { 

     for (XWPFParagraph paragraph : extractor) { 
      System.out.println("Question: "+paragraph.getParagraphText()); 
     } 

    } 
    public String fileExtension(String filename) 
    { 

     String extension = filename.substring(filename.lastIndexOf(".") + 1, filename.length()); 
     return extension; 
    } 

このコード与える:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/xmlbeans/XmlException 
    at l3s.readfiles.db.ReadFile.ReadFileParagraph(ReadFile.java:52) 
    at autometictagdetection.TagDetection.main(TagDetection.java:36) 
Caused by: java.lang.ClassNotFoundException: org.apache.xmlbeans.XmlException 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356) 
    ... 2 more 
Java Result: 1 

私はDOCファイルを読みたい時に別の問題があり、それはいくつかのファイルを非常にうまく読み込みましたが、いくつかのファイルではそのような例外があります

Exception in thread "main" org.apache.poi.hwpf.OldWordFileFormatException: The    document is too old - Word 95 or older. Try HWPFOldDocument instead? 
    at org.apache.poi.hwpf.HWPFDocument.<init>(HWPFDocument.java:222) 
    at org.apache.poi.hwpf.HWPFDocument.<init>(HWPFDocument.java:186) 
    at org.apache.poi.hwpf.HWPFDocument.<init>(HWPFDocument.java:174) 
    at l3s.readfiles.db.ReadFile.ReadFileParagraph(ReadFile.java:44) 
    at autometictagdetection.TagDetection.main(TagDetection.java:36) 
Java Result: 1 

私はPOI APを見ました私はhttp://poi.apache.org/hwpf/index.htmlの単語6と単語95をサポートしています。 誰にでもこの2つの問題の解決策を教えてください。

+0

...私はあなたが必要とすべてのライブラリをリストすることができないんだけど、あなたはおそらく達人を通じて把握することができます。 POI APIを知っているわけではありませんが、HWPFDocumentを使ってWord 95よりも新しいWord文書しか読み込めないので、代わりにコードでHWPFOldDOcumentを使用してください。 –

+0

私はそれを試みました。しかし、私はこれを行うときHWPFOldDocument document = new HWPFOldDocument(fis); 「HWPFOldDocumentに適切なコンストラクタが見つかりません」と表示されます。私はまた、HWPFOldDocumentに関するドキュメントを見つけられませんでした。 – Khaled

+0

私はHWPFOldDocumentをGoogleで検索したときに最初の結果が表示されました:https://poi.apache.org/apidocs/org/apache/poi/hwpf/HWPFOldDocument.html –

答えて

0

最初の問題は、プロジェクトの成果を参照する必要があると思います。

すなわちIは推測:(Apache POI pageからの)POI-OOXML-スキーマバージョン-yyyymmdd.jarに

ある

POI-OOXML-スキーマのXMLBeansを、。

Hereは、Apache XMLBeansページです。

秒1はかなり間違っているかを表示します

関連する問題