## **SaveDataPage和SaveFilePage的区以别及结合使用**
### **一.SaveFilePage和SaveDataPage的区别:**
* SaveFilePage:指定的页面可接受二进制文件流、Form域,直接保存修改后的文件。
* SaveDataPage:指定的页面可接收页面提交的Word数据区域、Excel表格数据、Form域。
* * * * *
* SaveFilePage:指定的页面只能创建FileServer对象。
* SaveDataPage:指定的页面只能创建PageOffice.ExcelReader或PageOffice.WordReader命名空间下的对象。
* * * * *
* SaveFilePage的使用:只需要保存修改后的文档,而不需要提取文档内容时。
* SaveDataPage的使用:需要提交文档内容或用户输入的文档内容时。
### **二.既保存数据,又保存文档**
以Java开发语言在线处理Word文档为例。
打开文件的代码:
~~~java
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, "张佚名");
~~~
SaveData.jsp获取数据的代码:
~~~java
WordDocument doc = new WordDocument(request, response);
// 获取提交的数值
DataRegion dataUserName = doc.openDataRegion("PO_userName");
DataRegion dataDeptName = doc.openDataRegion("PO_deptName");
……
doc.close();
~~~
SaveFile.jsp保存文档的代码:
~~~java
FileSaver fs=new FileSaver(request,response);
fs.saveToFile(request.getRealPath("doc/")+"/"+fs.getFileName());
fs.close();
~~~
>[]注:该示例的完整代码和详细演示请参考Samples4的基本功能
>一、28、既保存Word文档中指定位置的数据,又保存整篇文档(以Word为例)
:-: 
(在线编辑文档)
:-: 
(保存时后台获取到的数据)
### **三.保存文档和数据的事务实现**
代码到这里,可能我们会想,要是数据保存失败了PageOffice还会保存文档吗?PageOffice是先保存数据呢?还是先保存文档呢?能不能用事务控制来解决这一问题呢?下面我们来谈谈PageOffice的保存数据和保存文档的机制。
PageOffice的保存机制是先保存数据,再保存文件,如果用事务来控制的话并不能实现,原因是处理保存数据的页面和保存文档的页面是两个servlet,或者也可以说是两个不同的action,这并不符合事务的机制,但是我们可以模拟实现一个“事务”,例如在数据库中设置一个字段来标识这一状态,假如用flag来表示,初始值也为false,当数据保存成功时flag为true,保存失败是flag为false, 然后我们再到保存文件的页面根据flag的值判断数据是否保存成功,进而判断是否保存文件。
- 序言
- 产品简介
- PageOffice试用版和和正式版的区别
- PageOffice对客户端的要求
- PageOffice客户端安装步骤
- PageOffice常用功能与工作原理
- OA系统中的文档在线编辑及流转
- 痕迹保留、键盘批注、手写批注
- 文件并发控制功能
- 与数据库的关系
- SaveDataPage和SaveFilePage的区别
- 调用ZoomSeal签章系统中的印章
- 使用RunMacro运行Office的宏
- 为什么采用弹窗方式打开文件
- POBrowser弹窗方式的具体使用
- Word篇
- 常用接口对象
- WordDocument类
- DataRegion类
- DataTag类
- Paragraph类
- Shape类
- Table类
- Column类
- Row类
- Cell类
- WaterMark类
- DataRegion与DataTag的区别
- 编辑模板中的数据区域
- 动态填充Word文档
- 动态插入Word表格
- 动态创建数据区域
- 数据区域点击事件
- 实现Word文档编辑区域控制
- Word文档全文检索
- Word文件版本对比功能
- 实现用户自定义Word模板
- 实现多个Word文件合并
- Excel篇
- 常用接口对象
- Workbook类
- Sheet类
- Table类
- Cell类
- 动态填充Excel文档
- Excel指定单元格点击事件
- 实现用户自定义Excel模板
- 读取Excel文档中的数据
- 隐藏Excel的行号列标
- Java篇
- PageOffice集成说明
- 动态生成Word文件
- 给Word中的Table赋值
- 动态生成Excel文件
- Maven项目中引用PageOffice
- FileMaker组件功能简介
- ASP.NET篇
- PageOffice集成说明
- 给Word中的Table赋值
- 动态生成Word文档
- FileMaker组件功能简介
- 其他
- POPDF组件功能简介
- PPT相关功能简介
- 实现多人同时编辑一份文档
- PageOffice与Apache POI的区别
- 如何录制宏和编辑宏
- PDF篇
- PDF盖章