2011-08-18 26 views
15

Tôi muốn đọc một tập tin từ trong javaCách đọc tệp Doc hoặc Docx trong 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/

Tôi muốn đọc một tài liệu hoặc docx file trong Java

+1

Bạn chưa thực sự đặt câu hỏi tại đây. Nếu không có thêm chi tiết, câu hỏi này có thể sẽ bị đóng. Mục tiêu của bạn (xem, xử lý, chỉnh sửa, in ấn) là gì? Bạn đã thử những gì cho đến nay? Cái gì không hoạt động? Bạn có gặp lỗi không? – OverZealous

Trả lời

19

Đây là mã của ReadDoc/docx.java : Thao tác này sẽ đọc tệp dox/docx và in nội dung của nó lên bảng điều khiển. bạn có thể tùy chỉnh nó theo cách của bạn.

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

Bạn có thể muốn làm điều gì đó với ngoại lệ đó. –

+1

trong trường hợp này, trình trích xuất từ ​​chỉ có thể cung cấp văn bản của tệp doc. thậm chí không đề cập đến đoạn văn bắt đầu hoặc kết thúc ... – Wolverine

+1

Còn nội dung ngoài văn bản (Hình ảnh, Mã vạch, ..). Bạn có thể vui lòng chỉnh sửa mã thêm để đọc dữ liệu đầy đủ không? –

Các vấn đề liên quan