PageOffice的保存機制是先保存數據,再保存文件,因此點擊一次保存按鈕能夠同時實現數據和文件的保存。可是會有這樣的需求:單獨的保存文件或者保存數據。下面演示一下具體的實現過程。javascript
1、核心代碼html
poCtrl.setSaveDataPage("SaveData.jsp");//設置保存數據的頁面 poCtrl.setSaveFilePage("SaveFile.jsp");//設置保存文件的頁面
SaveFilePage和SaveDataPage的區別:java
SaveFilePage:指定的頁面可接受二進制文件流、Form域,直接保存修改後的文件。
SaveDataPage:指定的頁面可接收頁面提交的Word數據區域、Excel表格數據、Form域。jquery
SaveFilePage:指定的頁面只能建立FileServer對象。
SaveDataPage:指定的頁面只能建立PageOffice.ExcelReader或PageOffice.WordReader命名空間下的對象。web
SaveFilePage的使用:只須要保存修改後的文檔,而不須要提取文檔內容時。
SaveDataPage的使用:須要提交文檔內容或用戶輸入的文檔內容時。服務器
2、具體實現less
具體實現過程jsp
1.官網http://www.zhuozhengsoft.com/dowm/下載集成文件,引入jar包,配置web.xmlspa
寫a標籤以前先引入pageoffice須要的js文件(js文件的路徑是項目的根目錄下).net
<script type="text/javascript" src="/jquery.min.js"></script> <script type="text/javascript" src="/pageoffice.js" id="po_js_main"></script>
而後添加a標籤
<a href="javascript:POBrowser.openWindowModeless('Word.jsp' , 'width=1200px;height=800px;');">打開文件</a>
(1)在Word.jsp 頁面寫一個input 隱藏域,做爲判斷保存文件或者保存數據的標誌
(2)點擊保存的時候,給隱藏域賦值對應的值,例如:
當隱藏域的值爲true時,保存文件。
當隱藏域的值爲false時,保存數據。
(3)在Word.jsp 同級目錄下建立一個名爲test.doc的文件
在文件中添加兩個數據區域(書籤),分別爲PO_userName,PO_deptName
具體代碼
<%@ page language="java" import="java.util.*,com.zhuozhengsoft.pageoffice.*,com.zhuozhengsoft.pageoffice.wordwriter.*,java.awt.*" pageEncoding="utf-8"%> <% PageOfficeCtrl poCtrl = new PageOfficeCtrl(request); //設置服務器頁面 poCtrl.setServerPage(request.getContextPath()+"/poserver.zz"); WordDocument wordDoc = new WordDocument(); //打開數據區域,openDataRegion方法的參數表明Word文檔中的書籤名稱 DataRegion dataRegion1 = wordDoc.openDataRegion("PO_userName"); //設置DataRegion的可編輯性 dataRegion1.setEditing(true); DataRegion dataRegion2 = wordDoc.openDataRegion("PO_deptName"); dataRegion2.setEditing(true); poCtrl.setWriter(wordDoc); //添加自定義按鈕 poCtrl.addCustomToolButton("保存文件", "SaveFile", 1); poCtrl.addCustomToolButton("保存數據", "SaveData", 1); //設置保存數據的頁面 poCtrl.setSaveDataPage("SaveData.jsp"); //設置保存文檔的頁面 poCtrl.setSaveFilePage("SaveFile.jsp"); //打開Word文檔,當須要保存數據時,OpenModeType必須是docSubmitForm模式。 poCtrl.webOpen("doc/test.doc", OpenModeType.docSubmitForm, "張佚名"); %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title></title> <script type="text/javascript"> function SaveFile() { document.getElementById("flag").value="true"; document.getElementById("PageOfficeCtrl1").WebSave(); } function SaveData() { document.getElementById("flag").value="false"; document.getElementById("PageOfficeCtrl1").WebSave(); } </script> </head> <body> <form id="form1"> <div> <input id="flag" name="flag" type="hidden" /> </div> <div style="width: auto; height: 700px;"> <%=poCtrl.getHtmlCode("PageOfficeCtrl1")%> </div> </form> </body> </html>
保存文件的代碼
FileSaver fs=new FileSaver(request,response); if ("true".equals(fs.getFormField("flag"))){ fs.saveToFile(request.getSession().getServletContext().getRealPath("SaveDataAndFile/doc/")+"/"+fs.getFileName()); }else{ System.out.println("保存數據"); } fs.close();
保存數據的代碼
WordDocument doc = new WordDocument(request, response); if ("false".equals(doc.getFormField("flag"))){ //獲取提交的數值 String dataUserName = doc.openDataRegion("PO_userName").getValue(); String dataDeptName = doc.openDataRegion("PO_deptName").getValue(); String companyName= doc.getFormField("txtCompany"); } else{ System.out.println("保存文件"); } doc.close();
啓動項目直接訪問.此時會提示安裝插件,點擊安裝成功後提示註冊,填寫相關信息,填寫註冊碼 I7TGD-71VV-FYD8-4NMYP 就能夠打開文檔.
最終的實現效果
點擊保存的時候會出現兩次保存的進度條。
點擊保存文件,控制檯會打印保存文件。
點擊保存數據,控制檯會打印保存數據。