首页 > 其他分享 >PageOffice 6 保存数据区域数据同时保存文档

PageOffice 6 保存数据区域数据同时保存文档

时间:2023-10-17 16:25:45浏览次数:35  
标签:文件 doc 保存 PageOffice 保存文档 数据 WordDocument

在实际应用中,例如在线签订合同的时候,合同的签订日期,合同号等等这些信息既要保存到数据库,合同签订后又要将整个合同文件保存起来。这时候就需要用到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的值来判断数据是否保存成功,从而进一步判断是否要保存文件。

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

标签:文件,doc,保存,PageOffice,保存文档,数据,WordDocument
From: https://www.cnblogs.com/qq742655/p/17770004.html

相关文章

  • layui按钮多选数据赋值到OA明细表
    实际效果:点击全选按钮,选择数据,点击获取选中行数据,自动赋值给明细表 因为利用layui生成按钮以及表格,所以需要引入layui。表格内容为固定数据,如需要实现动态分页数据,自行实现,或者查看我另一篇博客文章:https://www.cnblogs.com/stfzhuang/p/17676056.html实现JS:<script>......
  • 简单易用的数据恢复软件,让你轻松找回失去的数据
    生活在信息时代,我们的生活和工作非常依赖各种数据,例如,照片、视频、文件。不论是个人还是商业用途,数据都扮演着十分重要的角色。然而,由于各种原因,我们的重要数据可能会遭遇丢失的风险,比如,误删除、磁盘故障等原因。为了找回丢失的文件,我们有必要了解一下数据恢复软件以及如何自己找回......
  • 简单易用的数据恢复软件,让你轻松找回失去的数据
    生活在信息时代,我们的生活和工作非常依赖各种数据,例如,照片、视频、文件。不论是个人还是商业用途,数据都扮演着十分重要的角色。然而,由于各种原因,我们的重要数据可能会遭遇丢失的风险,比如,误删除、磁盘故障等原因。为了找回丢失的文件,我们有必要了解一下数据恢复软件以及如何自己找回......
  • python连接数据库
    importpymysqlfrompymysql.constantsimportCLIENT'''pymysql执行多条SQL语句8.0版本之后需要在建立连接的时候添加参数client_flag=CLIENT.MULTI_STATEMENTS'''#打开数据库连接db=pymysql.connect(host='localhost',user='root',......
  • java学习第二天-Java数据类型
    数据类型Java是强类型语言要求变量的使用要符合规定,所有变量都必须先声明后才可以使用。publicclassDemo01{  //入口函数main()  publicstaticvoidmain(String[]args){    //所有标识符都应该以字母(大小写区分不同标识符)、$、_开始    //首......
  • 数据库SQL实战|牛客网(查找入职员工时间排名倒数第三的员工所有信息)
    描述有一个员工employees表简况如下: 请你查找employees里入职员工时间排名倒数第三的员工所有信息,以上例子输出如下:输出:10005|1955-01-21|Kyoichi|Maliniak|M|1989-09-12droptableifexists`employees`;CREATETABLE`employees`(`emp_no`int(11)NOTNULL,`bir......
  • 自定义报表设计:您的数据,您的规则
    在信息时代,数据是每个组织的核心资产。然而,拥有大量数据并不足够,我们需要将这些数据转化为有用的信息,以指导决策和行动。这就是山海鲸报表系统的使命。 解析数据的力量山海鲸报表系统是一款强大的工具,旨在帮助企业和组织解析和可视化他们的数据。不再需要费时费力地研究各种数......
  • 为什么要做数据可视化系统
     数据可视化已经成为企业日常管理当中必备的一项重要技术,它以图表、图形和其他可视化形式将数据转化为可理解的信息,帮助企业快速做出决策。如今,随时外部竞争环境的恶化,拥有一套高效精准的数据可视化系统成了重中之重。因此,数聚就从为什么企业需要数据可视化系统来做深度探讨,使用......
  • 岩土工程监测利器:多通道振弦数据记录仪应用隧道监测
    岩土工程监测利器:多通道振弦数据记录仪应用隧道监测岩土工程监测在现代工程建设中的作用越来越重要。为了确保工程质量和工程安全,需要对工程过程中的各种参数进行实时监测和记录。而多通道振弦数据记录仪则是一种重要的监测工具,特别适用于隧道监测。 多通道振弦数据记录仪是......
  • 火山引擎 ByteHouse:双十一即将到来,直播商家如何用数据“点播成金”?
    更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群“双十一”电商大促脚步渐近,各大平台的战火又将燃起。直播电商以低成本、高转化率等优势备受商家青睐。据智研咨询数据显示,2022年我国直播电商市场规模为34879亿元,较2017年的196.4亿元增长......