[轉載]Java動態填充word文檔並上傳到伺服器

來源:互聯網
上載者:User

標籤:eal   on()   運行   產生   soft   end   make   str   href   

一、 需求背景

 

  在一些特殊應用場合,客戶希望在伺服器上產生文檔的同時並填充資料,用戶端的頁面不顯示開啟文檔,但是伺服器上產生文檔對伺服器壓力很大,目前伺服器上產生文檔第一種就是方式是jacob, 但是局限於windows平台,往往許多JAVA程式運行於其他動作系統,在此不討論該方案。二是POI。 但是它的excel處理還湊合, word模組還局限於讀取word的常值內容,寫word檔案的功能就更弱;還有一個要命的地方,處理doc格式和處理docx格式的類幾乎完全不同,要分開針對不同的格式寫不同的代碼,這就意味著使用者上傳的docx格式檔案如果使用了doc的副檔名,程式馬上崩潰。而且個人認為poi結構混亂,編碼比較複雜,開發過程非常消耗時間和精力。PageOffice提供了FileMakerCtrl組件,FileMakerCtrl是在用戶端產生文檔並上傳到伺服器,但是不會在Web網頁裡顯示word文檔,因此採用FileMakerCtrl產生word檔案有兩個優點:1. 在用戶端產生word文檔,不會對伺服器造成任何壓力;2. 產生的文檔屬於標準的word文檔格式。

 

二、 核心代碼

 

  1.製作模板,開啟word模板檔案,在檔案中插入書籤:PO_company、PO_year、PO_number,如所示:

 

  

 

  2. 動態填充word文檔並上傳到伺服器

 
    FileMakerCtrl fmCtrl = new FileMakerCtrl(request);    //設定PageOffice的服務頁面    fmCtrl.setServerPage(request.getContextPath()+"/poserver.zz");        WordDocument doc = new WordDocument();    //給資料區域賦值,即把資料填充到模板中相應的位置    doc.openDataRegion("PO_company").setValue("北京某某軟體有限公司  ");    doc.openDataRegion("PO_year").setValue("2018");    doc.openDataRegion("PO_number").setValue("008");    fmCtrl.setWriter(doc);    //設定用來接收產生的文檔的action方法或RequestMapping方法    fmCtrl.setSaveFilePage("/SaveFile");     fmCtrl.fillDocument("doc/template.doc", DocumentOpenType.Word);
 

  3. 編寫SaveFilePage指向的action或RequestMapping方法的代碼,接收用戶端上傳的檔案流

 
    FileSaver fs = new FileSaver(request, response);    String fileName = "myfile.doc" ;    fs.saveToFile(request.getSession().getServletContext().getRealPath("/") +"/"+ fileName);    fs.close();
 

  4. 產生的word檔案效果。

 

  

 

三、 相關下載

 

  訪問下面的地址下載PageOffice for Java 開發包,部署Samples4樣本之後參考樣本:二、13、FileMaker轉換單個文檔(以Word為例)

 

  http://www.zhuozhengsoft.com/dowm/

 

[轉載]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.