[轉載]java擷取word裡面的文本

來源:互聯網
上載者:User

標籤:分享   ssi   mapping   pre   org   code   real   sql語句   poc   

需求情境

  開發的web辦公系統如果需要處理大量的Word文檔(比如有成千上萬個文檔),使用者一定提出尋找包含某些關鍵字的文檔的需求,這就要求能夠讀取 word 中的文字內容,而忽略其中的文字樣式、表格、圖片等資訊。

方案分析

  方案一:使用Apache POI技術將所有伺服器上文檔的文本擷取後儲存到資料庫,尋找文檔時利用sql語句檢索資料中儲存的文檔文本是否包含關鍵字來搜尋到相關文檔。然而現在 microsoft word 有兩種文檔格式doc和docx,這兩個版本儲存資料的格式上都有相當大的差別。調研發現apache  POI針對doc和docx提供了兩套不同的API介面,需要針對兩種文檔格式編寫不同的代碼,word文檔自身格式複雜,讀取word文檔內容的代碼會對伺服器造成一定的壓力,且無法實現讓使用者線上處理word文檔。 

  POI首頁地址:https://poi.apache.org/

  方案二:使用PageOffice組件的FileSaver對象的getDocumentText方法,擷取word文檔中的純文字內容,且如果調用PageOffice實現此功能的話,同時也可以實現word檔案的線上編輯。

  

實現步驟

  1. 調用PageOffice線上開啟word檔案,比如:test.doc

PageOfficeCtrl poCtrl=new PageOfficeCtrl(request);//設定伺服器頁面poCtrl.setServerPage(request.getContextPath()+"/poserver.zz");//設定儲存頁面為SaveFile.jsp,或SaveFile.do SaveFile.action 等action方法或RequestMapping方法均可poCtrl.setSaveFilePage("SaveFile.jsp");//開啟Word文檔poCtrl.webOpen("doc/test.doc",OpenModeType.docNormalEdit,"Tom");

  2. 在處理儲存操作的頁面(SaveFile.jsp)或方法裡執行儲存檔案和擷取文檔中純文字內容的操作:

FileSaver fs=new FileSaver(request,response);fs.saveToFile(request.getSession().getServletContext().getRealPath("doc/")+"/"+fs.getFileName());//儲存檔案String strDocumentText = fs.getDocumentText();//擷取文檔的純文字內容,不帶任何附加格式 // - 編寫代碼,儲存文檔的常值內容到資料庫 - //......fs.close();

  3. 需要對全文檢索索引的時候,只需對資料庫中儲存了word檔案純文字內容的資料庫欄位做SQL查詢即可。

[轉載]java擷取word裡面的文本

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.