pageoffice 在線打開 word 文件後,實現文檔和數據的單獨保存

    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

2.在父頁面index.jsp(須要打開文檔的頁面)放一個a標籤或者button

寫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>

爲何要使用pobrowser方法,請參考http://www.javashuo.com/article/p-pftqppwq-hu.html

3.在父頁面同級目錄下建立一個名爲Word.jsp的文件

(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   就能夠打開文檔.

最終的實現效果

點擊保存的時候會出現兩次保存的進度條。

點擊保存文件,控制檯會打印保存文件。

點擊保存數據,控制檯會打印保存數據。

剛開始接觸pageoffice的話,也能夠看視頻快速上手http://www.zhuozhengsoft.com/Technical/

相關文章
相關標籤/搜索