一.SaveFilePage和SaveDataPage的区别:
SaveFilePage:指定的页面可接受二进制文件流、Form域,直接保存修改后的文件。
SaveDataPage:指定的页面可接收页面提交的Word数据区域、Excel表格数据、Form域。
SaveFilePage:指定的页面只能创建FileServer对象。
SaveDataPage:指定的页面只能创建PageOffice.ExcelReader或PageOffice.WordReader命名空间下的对象。
SaveFilePage的使用:只需要保存修改后的文档,而不需要提取文档内容时。
SaveDataPage的使用:需要提交文档内容或用户输入的文档内容时。
二.既保存数据,又保存文档,以word文档为例:
- PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);
- //设置服务器页面
- poCtrl.setServerPage(request.getContextPath()+"/poserver.zz");
- ……
- poCtrl.setSaveDataPage("SaveData.jsp");//设置保存数据的页面
- poCtrl.setSaveFilePage("SaveFile.jsp"); //设置保存文件的页面
- //打开Word文档,要保存数据,此处的打开文档的模式必须是docSubmitForm模式.
- poCtrl.webOpen("doc/test.doc", OpenModeType.docSubmitForm, "张佚名");
- poCtrl.setTagId("PageOfficeCtrl1");//此行必需
- WordDocument doc = new WordDocument(request, response);
- //获取提交的数值
- DataRegion dataUserName = doc.openDataRegion("PO_userName");
- DataRegion dataDeptName = doc.openDataRegion("PO_deptName");
- ……
- doc.showPage(500, 400);
SaveFile.jsp页面保存文档的代码:
- FileSaver fs=new FileSaver(request,response);
- fs.saveToFile(request.getRealPath("SubmitWord/doc/")+"/"+fs.getFileName());
- fs.close();
注:该示例的完整代码和详细演示请参考Samples的基本功能一、28、既保存Word文档中指定位置的数据,又保存整篇文档(以Word为例)(SaveDataAndFile),同时结合pageoffice开发帮助。
|
三.PageOffice保存文档和数据的原理
代码到这里,可能我们会想,要是数据保存失败了PageOffice还会保存文档吗?PageOffice是先保存数据呢?还是先保存文档呢?能不能用事务控制来解决这一问题呢?下面我们来谈谈PageOffice的保存数据和保存文档的机制。