PageOffice ZoomSeal ZDFOffice 技术支持 合作伙伴 会员登录 如何购买

SaveDataPage和SaveFilePage的区以别及结合使用

一.SaveFilePage和SaveDataPage的区别:

SaveFilePage:指定的页面可接受二进制文件流、Form域,直接保存修改后的文件。
SaveDataPage:
指定的页面可接收页面提交的Word数据区域、Excel表格数据、Form域。

SaveFilePage:指定的页面只能创建FileServer对象。
SaveDataPage:
指定的页面只能创建PageOffice.ExcelReaderPageOffice.WordReader命名空间下的对象。

SaveFilePage的使用:只需要保存修改后的文档,而不需要提取文档内容时。
SaveDataPage
的使用:需要提交文档内容或用户输入的文档内容时。

二.既保存数据,又保存文档,以word文档为例:

Java代码:

 

  1. PageOfficeCtrl poCtrl = new PageOfficeCtrl(request); 
  2. //设置服务器页面 
  3. poCtrl.setServerPage(request.getContextPath()+"/poserver.zz"); 
  4. …… 
  5. poCtrl.setSaveDataPage("SaveData.jsp");//设置保存数据的页面 
  6. poCtrl.setSaveFilePage("SaveFile.jsp"); //设置保存文件的页面 
  7. //打开Word文档,要保存数据,此处的打开文档的模式必须是docSubmitForm模式. 
  8. poCtrl.webOpen("doc/test.doc", OpenModeType.docSubmitForm, "张佚名"); 
  9. poCtrl.setTagId("PageOfficeCtrl1");//此行必需 
 
    SaveData.jsp页面获取数据的代码:

  

  1. WordDocument doc = new WordDocument(request, response); 
  2. //获取提交的数值 
  3. DataRegion dataUserName = doc.openDataRegion("PO_userName"); 
  4. DataRegion dataDeptName = doc.openDataRegion("PO_deptName"); 
  5. ……                         
  6. doc.showPage(500400); 
 

   SaveFile.jsp页面保存文档的代码:

 

  1. FileSaver fs=new FileSaver(request,response); 
  2. fs.saveToFile(request.getRealPath("SubmitWord/doc/")+"/"+fs.getFileName()); 
  3. fs.close(); 

                    图1   打开文档的页面
 点击上图中的保存按钮后,出现两次保存的进度条:

                       图2      获取到的要保存的数据
 
 
注:该示例的完整代码和详细演示请参考Samples的基本功能一、28既保存Word文档中指定位置的数据,又保存整篇文档(以Word为例)(SaveDataAndFile),同时结合pageoffice开发帮助。
 
 

 三.PageOffice保存文档和数据的原理

     代码到这里,可能我们会想,要是数据保存失败了PageOffice还会保存文档吗?PageOffice是先保存数据呢?还是先保存文档呢?能不能用事务控制来解决这一问题呢?下面我们来谈谈PageOffice的保存数据和保存文档的机制。

 
PageOffice的保存机制是先保存数据,再保存文件,如果用事务来控制的话并不能实现,原因是处理保存数据的页面和保存文档的页面是两个servlet,或者也可以说是两个不同的action,这并不符合事务的机制,但是我们可以模拟实现一个“事务”,例如在数据库中设置一个字段来标识这一状态,假如用flag来表示,初始值也为false,当数据保存成功时flag为true,保存失败是flag为false, 然后我们再到保存文件的页面根据flag的值判断数据是否保存成功,进而判断是否保存文件。
 
返回顶部 在线购买 下载中心 400-6600-770 2692936468