当前位置: 首页 > news >正文

国产linux系统(银河麒麟,统信uos)使用 PageOffice在线编辑word文件保存数据同时保存文件

在实际应用中,例如在线签订合同的时候,合同的签订日期,合同号等等这些信息既要保存到数据库,合同签订后又要将整个合同文件保存起来。这时候就需要用到PageOffice的保存数据区域数据的同时保存整个文件的功能。

后端代码

  1. 后端打开文件的接口方法中,在webOpen方法之前给SaveFilePage和SaveDataPage方法赋值(设置好保存时由哪个地址接口负责接收数据和处理控件上传的文件流)。
PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);
// com.zhuozhengsoft.pageoffice.word命名空间的WordDocumentWriter
WordDocumentWriter wordDoc = new WordDocumentWriter(); 
//打开数据区域,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, "张三");
  1. 在SaveDataPage属性指向的地址接口中,创建com.zhuozhengsoft.pageoffice.word包下的WordDocumentReader对象获取数据。
WordDocumentReader doc = new WordDocumentReader(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();
  1. 在SaveFilePage属性指向的地址接口中,创建FileSaver对象处理文件的保存工作。

前端代码

本示例无前端关键代码。

SaveFilePage和SaveDataPage的区别

  • SaveFilePage:指定的页面可接受二进制文件流、Form域,直接保存修改后的文件。指定的页面只能创建FileServer对象。
  • SaveDataPage:指定的页面可接收页面提交的Word数据区域、Excel表格数据、Form域。指定的页面只能创建WordDocumentReader或WorkbookReader及其相关的对象。
  • SaveFilePage的使用:只需要保存修改后的文档,而不需要提取文档内容时。
  • SaveDataPage的使用:需要提交文档内容或用户输入的文档内容时。

保存文档和数据的事务实现

在实际开发中,我们可能会遇到这样的问题:如果数据保存失败了,PageOffice是否会继续保存文档呢?事实上,PageOffice的保存机制是先保存数据,再保存文件。但是,如果我们想用事务控制来解决这个问题,可能会遇到一些困难。原因是处理保存数据的页面和保存文档的页面通常是两个不同的servlet或action,这与事务机制并不完全符合。但是我们可以通过模拟实现一个“事务”,例如,在Session中设置一个变量来标识状态,比如用flag来表示,初始值为false。当数据保存成功时,将flag设置为true;保存失败时,flag为false。然后,在保存文件的页面中,根据flag的值来判断数据是否保存成功,从而进一步判断是否要保存文件。

参考链接:保存数据区域数据同时保存文档

相关文章:

  • 第46节:多模态分类(图像+文本)
  • Java在word中指定位置插入图片。
  • 如何在电脑上轻松访问 iPhone 文件
  • LabVIEW自感现象远程实验平台
  • Java编程课(一)
  • 力扣HOT100之二分查找: 34. 在排序数组中查找元素的第一个和最后一个位置
  • Android Test2 获取系统android id
  • DeepSeek 助力 Vue3 开发:打造丝滑的日历(Calendar),日历_天气预报日历示例(CalendarView01_18)
  • WordZero:让Markdown与Word文档自由转换的Golang利器
  • 装备制造项目管理具备什么特征?如何选择适配的项目管理软件系统进行项目管控?
  • 【SSM】SpringBoot笔记2:整合Junit、MyBatis
  • 【SSM】SpringMVC学习笔记7:前后端数据传输协议和异常处理
  • 2025前端微服务 - 无界 的实战应用
  • 深入浅出 Scrapy:打造高效、强大的 Python 网络爬虫
  • 初探Service服务发现机制
  • QT使用WxSQLite3打开加密数据库并查询
  • Django CMS 的 Demo
  • Qt多线程访问同一个数据库源码分享(基于Sqlite实现)
  • 更新版【飞云翻倍系统】新增支撑压力多线参考技术,操盘技术图文解说
  • 4.2 HarmonyOS NEXT分布式AI应用实践:联邦学习、跨设备协作与个性化推荐实战
  • 来宾建设工程造价网站/外贸seo推广公司
  • 医院做网站的费用多少/短视频培训
  • 网站怎么做百度能搜到/网络服务主要包括什么
  • 网站图片用什么格式/58精准推广点击器
  • 手机网站设计建设服务/谷歌广告推广怎么做
  • 网站宣传虚假处罚标准/360优化大师官网