java合併word文件

需求背景

  在互聯網教育行業,做內容相關的項目經常碰到的一個問題就是如何動態生成一張word試卷。事先把題庫中的每一道試題都已經保存成一個獨立的word文件了,但是在選擇了部分試題生成一張word試卷的時候,如果不能通過java程序來合併已經選擇了的word試題文件,那麼就只能通過手動錄入和拷貝的方式來合併word內容,效率低下,而且人工成本和錄入出錯率都較高。

問題難點

  使用POI來實現word合併需要面對的困難主要有以下幾個方面:

word 結構問題 —— word不開源,且含有很多非文本內容,比如圖表、圖片,而已知的常規方法只能解析純文本內容,所以如果不知道word內部層級結構,解析將難以進行。
word 版本問題 —— 目前word有docx和doc兩種文檔格式,解析是否要全部兼容?當然,前提是已經成功解析一種類型。
word 規範問題 —— 有些word可能是早期製作的,返工代價太大,所以格式內容多樣化。而且就算制定word格式規範,新制作的word也無法保證格式一定正確。
  使用Jacob來實現word文檔合併要面對的問題:

服務器必須是Windows操作系統 —— 目前之所以web項目多用Java開發,就是因爲服務器可以是Linux、Unix等非Windows的系統來降低項目的成本。
服務器上必須安裝Office —— Jacob的意思就是: Java COM Bridge,java中調用office提供的com接口來實現對Office文件的操作。
併發問題 —— 如果多用戶同時在線生成word文件就必須處理此併發問題,稍有不慎,就會在服務器端產生Office的死進程,死鎖服務器的內存資源。
解決方案

  問題研究一段時間後,進展緩慢,在反覆百度的過程中發現PageOffice提供了很好的解決方案,並且在PageOffice的示例程序中就有相關的演示,只不過PageOffice的演示示例是把word文件以二進制流的形式保存在數據庫中,只需要在自己的項目中改爲用磁盤文件的方式保存word文件就可以了。PageOffice方案採用了調用客戶端Office接口進行word文檔合併,這樣就同時解決了word格式問題、版本問題、規範問題和多用戶的併發問題,對服務器端也沒有任何要求,堪稱完美。

  PageOffice for Java的開發包下載地址:http://www.zhuozhengsoft.com/dowm/ ,拷貝解壓出來的 Samples4 文 件 夾 到 Tomcat 的 Webapps 目 錄 下 , 訪 問 : http://localhost:8080/Samples4/index.html,查看綜合演示: 三、2、在Word文檔中動態生成一張試卷

  
java合併word文件
java合併word文件
java合併word文件
  

  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章