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/

相关文章
相关标签/搜索