2011-08-18 70 views
15

quiero leer un archivo de Word en Java¿Cómo se leía el archivo Doc o Docx en 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/

quiero leer un archivo doc o docx en Java

+1

No ha hecho realmente una pregunta aquí. Sin más detalles, es probable que esta pregunta se cierre. ¿Cuál es su objetivo (visualización, procesamiento, edición, impresión)? ¿Qué has intentado hasta ahora? ¿Qué no está funcionando? ¿Estás recibiendo errores? – OverZealous

Respuesta

19

Aquí está el código de ReadDoc/docx.java : Esto leerá un archivo dox/docx e imprimirá su contenido a la consola. puedes personalizarlo a tu manera.

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

Es posible que desee hacer algo con esa excepción. –

+1

en este caso, el extractor de palabras solo puede proporcionar el texto del archivo doc. ni siquiera menciona dónde comienza o termina el párrafo ... – Wolverine

+1

¿Qué pasa con el contenido aparte del texto (Imagen, Código de barras, ...). ¿Puedes editar el código para leer datos completos? –

Cuestiones relacionadas