1. 程式人生 > >POI3.8讀取WORD(簡潔例項)

POI3.8讀取WORD(簡潔例項)

目前最新版POI為3.8: 
poi-3.8-20120326.jar 
poi-examples-3.8-20120326.jar 
poi-excelant-3.8-20120326.jar 
poi-ooxml-3.8-20120326.jar 
poi-ooxml-schemas-3.8-20120326.jar 
poi-scratchpad-3.8-20120326.jar 

Java程式碼  收藏程式碼
  1. import java.io.FileInputStream;  
  2. import java.io.FileOutputStream;  
  3. import java.io.IOException;  
  4. import java.io.InputStream;  
  5. import javax.servlet.ServletException;  
  6. import javax.servlet.http.HttpServlet;  
  7. import javax.servlet.http.HttpServletRequest;  
  8. import javax.servlet.http.HttpServletResponse;  
  9. import org.apache.poi.hwpf.HWPFDocument;  
  10. import org.apache.poi.hwpf.extractor.WordExtractor;  
  11. import org.apache.poi.hwpf.model.PicturesTable;  
  12. import org.apache.poi.hwpf.usermodel.CharacterRun;  
  13. import org.apache.poi.hwpf.usermodel.Picture;  
  14. import org.apache.poi.hwpf.usermodel.Range;  
  15. public class WordDemo extends HttpServlet {  
  16.     private static final long serialVersionUID = 1L;  
  17.     public void doGet(HttpServletRequest request, HttpServletResponse response)  
  18.             throws ServletException, IOException {  
  19.         this.doPost(request, response);  
  20.     }  
  21.     public void doPost(HttpServletRequest request, HttpServletResponse response)  
  22.             throws ServletException, IOException {  
  23.         //從硬碟讀取一個doc文件  
  24.         InputStream in = new FileInputStream("F:\\test.doc");  
  25.         //類從word文件中提取文字,非特殊情況下,都將使用getParagraphText()與getText()  
  26.         WordExtractor word = new WordExtractor(in);  
  27.         //獲取段文字  
  28.         String [] strArray = word.getParagraphText();  
  29.         String str = word.getText();    
  30.         for(int i=0 ; i<strArray.length ; i++){  
  31.             System.out.println(strArray[i]+"\ti迴圈:"+i);  
  32.         }  
  33.         System.out.println(str +"\t --");  
  34.         //這個建構函式從InputStream中載入Word文件。  
  35.         HWPFDocument doc = new HWPFDocument((InputStream)new FileInputStream("F:\\test.doc"));  
  36.         //這個類為HWPF物件模型,對文件範圍段操作  
  37.         Range range = doc.getRange(); //  
  38.         //看看此文件有多少個段落  
  39.         int num = range.numParagraphs();  
  40.         System.out.println(num+"段");     
  41.         //得到word資料流  
  42.         byte [] dataStream = doc.getDataStream();  
  43.         System.out.println("資料流長度:"+dataStream.length);  
  44.         //用於在一段範圍內獲得段落數  
  45.         int numChar = range.numCharacterRuns();  
  46.         System.out.println("CharacterRuns 數:"+numChar);  
  47.         //負責影象提取  和    確定一些檔案某塊是否包含嵌入的影象。  
  48.         PicturesTable table = new PicturesTable(doc, dataStream, null);  
  49.         for(int j=0 ; j<numChar ; j++){  
  50.             //這個類表示一個文字執行,有著共同的屬性。  
  51.             CharacterRun run = range.getCharacterRun(j);  
  52.             //是否存在圖片  
  53.             boolean bool = table.hasPicture(run);  
  54.             System.out.println("是否存在圖片:"+bool);  
  55.             if(bool){  
  56.                 //返回圖片物件繫結到指定的CharacterRun  
  57.                 Picture pic = table.extractPicture(run, true);  
  58.                 //圖片的內容位元組寫入到指定的輸出流。  
  59.                 pic.writeImageContent(new FileOutputStream("F:\\"+j+".bmp"));  
  60.                 System.out.println("成功提取圖片"+j+":");  
  61.             }  
  62.         }  
  63.         request.getRequestDispatcher("ok.jsp").forward(request, response);  
  64.     }  
  65. }