2011-08-18 89 views
15

voglio leggere un file di Word in javaCome leggere il documento Doc o Docx in java?

import org.apache.poi.poifs.filesystem.*; 
import org.apache.poi.hpsf.DocumentSummaryInformation; 
import org.apache.poi.hwpf.*; 
import org.apache.poi.hwpf.extractor.*; 
import org.apache.poi.hwpf.usermodel.HeaderStories; 

import java.io.*; 

public class ReadDocFileFromJava { 

    public static void main(String[] args) { 
     /**This is the document that you want to read using Java.**/ 
     String fileName = "C:\\Path to file\\Test.doc"; 

     /**Method call to read the document (demonstrate some useage of POI)**/ 
     readMyDocument(fileName); 

    } 
    public static void readMyDocument(String fileName){ 
     POIFSFileSystem fs = null; 
     try { 
      fs = new POIFSFileSystem(new FileInputStream(fileName)); 
      HWPFDocument doc = new HWPFDocument(fs); 

      /** Read the content **/ 
      readParagraphs(doc); 

      int pageNumber=1; 

      /** We will try reading the header for page 1**/ 
      readHeader(doc, pageNumber); 

      /** Let's try reading the footer for page 1**/ 
      readFooter(doc, pageNumber); 

      /** Read the document summary**/ 
      readDocumentSummary(doc); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

    public static void readParagraphs(HWPFDocument doc) throws Exception{ 
     WordExtractor we = new WordExtractor(doc); 

     /**Get the total number of paragraphs**/ 
     String[] paragraphs = we.getParagraphText(); 
     System.out.println("Total Paragraphs: "+paragraphs.length); 

     for (int i = 0; i < paragraphs.length; i++) { 

      System.out.println("Length of paragraph "+(i +1)+": "+ paragraphs[i].length()); 
      System.out.println(paragraphs[i].toString()); 

     } 

    } 

    public static void readHeader(HWPFDocument doc, int pageNumber){ 
     HeaderStories headerStore = new HeaderStories(doc); 
     String header = headerStore.getHeader(pageNumber); 
     System.out.println("Header Is: "+header); 

    } 

    public static void readFooter(HWPFDocument doc, int pageNumber){ 
     HeaderStories headerStore = new HeaderStories(doc); 
     String footer = headerStore.getFooter(pageNumber); 
     System.out.println("Footer Is: "+footer); 

    } 

    public static void readDocumentSummary(HWPFDocument doc) { 
     DocumentSummaryInformation summaryInfo=doc.getDocumentSummaryInformation(); 
     String category = summaryInfo.getCategory(); 
     String company = summaryInfo.getCompany(); 
     int lineCount=summaryInfo.getLineCount(); 
     int sectionCount=summaryInfo.getSectionCount(); 
     int slideCount=summaryInfo.getSlideCount(); 


    enter code here 
     System.out.println("---------------------------"); 
     System.out.println("Category: "+category); 
     System.out.println("Company: "+company); 
     System.out.println("Line Count: "+lineCount); 
     System.out.println("Section Count: "+sectionCount); 
     System.out.println("Slide Count: "+slideCount); 

    } 

} 

http://sanjaal.com/java/tag/java-and-docx-format/

voglio leggere un file doc o docx in Java

+1

Non hai davvero fatto una domanda qui. Senza ulteriori dettagli, questa domanda potrebbe essere chiusa. Qual è il tuo obiettivo (visualizzazione, elaborazione, modifica, stampa)? Cosa hai provato fino ad ora? Cosa non funziona? Stai ricevendo errori? – OverZealous

risposta

19

Ecco il codice di ReadDoc/docx.java : Questo leggerà un file dox/docx e ne stamperà il contenuto sulla console. puoi personalizzarlo a modo tuo.

import java.io.*; 
import org.apache.poi.hwpf.HWPFDocument; 
import org.apache.poi.hwpf.extractor.WordExtractor; 

public class ReadDocFile 
{ 
    public static void main(String[] args) 
    { 
     File file = null; 
     WordExtractor extractor = null; 
     try 
     { 

      file = new File("c:\\New.doc"); 
      FileInputStream fis = new FileInputStream(file.getAbsolutePath()); 
      HWPFDocument document = new HWPFDocument(fis); 
      extractor = new WordExtractor(document); 
      String[] fileData = extractor.getParagraphText(); 
      for (int i = 0; i < fileData.length; i++) 
      { 
       if (fileData[i] != null) 
        System.out.println(fileData[i]); 
      } 
     } 
     catch (Exception exep) 
     { 
      exep.printStackTrace(); 
     } 
    } 
} 
+9

Si potrebbe voler fare qualcosa con quell'eccezione. –

+1

in questo caso word extractor può solo dare il testo del file doc. anche non menziona dove il paragrafo sta iniziando o finendo ... – Wolverine

+1

E il contenuto oltre al testo (Immagine, codice a barre, ..). Potete modificare ulteriormente il codice per leggere i dati completi? –

Problemi correlati