类似17做网店的网站,整合营销策划,网页传奇新开服,网站优化网PageOffice 国产版 #xff1a;支持信创系统#xff0c;支持银河麒麟V10和统信UOS#xff0c;支持X86#xff08;intel、兆芯、海光等#xff09;、ARM#xff08;飞腾、鲲鹏、麒麟等#xff09;芯片架构。
在OA办公、文档流转等各个Web系统中#xff0c;实现最简单的…PageOffice 国产版 支持信创系统支持银河麒麟V10和统信UOS支持X86intel、兆芯、海光等、ARM飞腾、鲲鹏、麒麟等芯片架构。
在OA办公、文档流转等各个Web系统中实现最简单的打开编辑保存文件功能调用PageOffice只需要几行代码就可以完成。
在实际应用中例如在线签订合同的时候合同的签订日期合同号等等这些信息既要保存到数据库合同签订后又要将整个合同文件保存起来。这时候就需要用到PageOffice的保存数据区域数据的同时保存整个文件的功能。
后端代码
1.后端打开文件的接口方法中在webOpen方法之前给SaveFilePage和SaveDataPage方法赋值设置好保存时由哪个地址接口负责接收数据和处理控件上传的文件流。
PageOfficeCtrl poCtrl new PageOfficeCtrl(request);
// com.zhuozhengsoft.pageoffice.wordwriter命名空间的WordDocument
WordDocument wordDoc new WordDocument();
//打开数据区域openDataRegion方法的参数代表Word文档中的书签名称
wordDoc.openDataRegion(PO_contractNum).setEditing(true);
wordDoc.openDataRegion(PO_contractDate).setEditing(true);poCtrl.setWriter(wordDoc);// 必须。
poCtrl.setSaveDataPage(saveData); //设置保存数据时的接口地址
poCtrl.setSaveFilePage(saveFile);//设置保存文件时的接口地址
//webOpen的第一个参数支持能够输出下载文件的Url相对地址或者文件在服务器上的磁盘路径两种方式
//查看详细请在本站搜索“PageOffice属性或方法中涉及到的URL路径或磁盘路径的说明”
poCtrl.webOpen(doc/test.docx, OpenModeType.docSubmitForm, 张三);2.(1)在SaveDataPage属性指向的地址接口中创建com.zhuozhengsoft.pageoffice.wordreader.WordDocument包下的WordDocument对象获取数据。
WordDocument doc new WordDocument(request, response);
//获取提交的数值
String contractNum doc.openDataRegion(PO_contractNum).getValue();
String contractDate doc.openDataRegion(PO_contractDate).getValue();
String contractId doc.getFormField(contractId);//getFormField的参数是Form控件的id
/**
*实际开发中这块代码一般是连接数据库将上面获取的数据更新到数据库中
*/
doc.close();2.(2)在SaveFilePage属性指向的地址接口中创建FileSaver对象处理文件的保存工作。
FileSaver fs new FileSaver(request, response);
fs.saveToFile(request.getSession().getServletContext().getRealPath(doc/) fs.getFileName());
fs.close();SaveFilePage和SaveDataPage的区别
SaveFilePage:指定的页面可接受二进制文件流、Form域直接保存修改后的文件。指定的页面只能创建FileServer对象。SaveDataPage:指定的页面可接收页面提交的Word数据区域、Excel表格数据、Form域。指定的页面只能创建PageOffice.ExcelReader或PageOffice.WordReader命名空间下的对象。SaveFilePage的使用只需要保存修改后的文档而不需要提取文档内容时。SaveDataPage的使用需要提交文档内容或用户输入的文档内容时。
保存文档和数据的事务实现
在实际开发中我们可能会遇到这样的问题如果数据保存失败了PageOffice是否会继续保存文档呢事实上PageOffice的保存机制是先保存数据再保存文件。但是如果我们想用事务控制来解决这个问题可能会遇到一些困难。原因是处理保存数据的页面和保存文档的页面通常是两个不同的servlet或action这与事务机制并不完全符合。但是我们可以通过模拟实现一个“事务”例如在Session中设置一个变量来标识状态比如用flag来表示初始值为false。当数据保存成功时将flag设置为true保存失败时flag为false。然后在保存文件的页面中根据flag的值来判断数据是否保存成功从而进一步判断是否要保存文件。
参考链接保存数据区域数据同时保存文档