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 就能够打开文档.
最终的实现效果
点击保存的时候会出现两次保存的进度条。
点击保存文件,控制台会打印保存文件。
点击保存数据,控制台会打印保存数据。