首页 > 其他分享 >PageOffice保存文件同时保存文件中的数据

PageOffice保存文件同时保存文件中的数据

时间:2023-12-21 13:45:05浏览次数:42  
标签:文件 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/lhl77/p/17918804.html

        相关文章

        • jmeter CSV参数化文件设置
           遇到文件结束符是否再次循环:假如我把你文件中的数据用完了,还能从第一行再次读取数据吗;默认true,是允许的。 默认情况是:将文件中的数据读取完了,再去从头读取数据。遇到文件结束符停止线程:False, 文件从头读到尾,要停止线程不。遇到文件结束符再次循环:True遇到文件结束符停止......
        • java读取网络文件和本地文件
          java读取网络文件和本地文件:packagecom.mybatisplustest.test;importjava.io.*;importjava.net.URL;/***CreatedbyAdministratoron2023/12/21.*/publicclassTest{publicstaticvoidmain(String[]args){//读取网络文件readNet......
        • 【Django】加密 settings.py文件中的数据库密码
          1.使用fromcryptography.fernetimportFernet第三方库pip3installcryptography2.Fernet的使用fromcryptography.fernetimportFernet#生成加密密钥key=Fernet.generate_key()#创建Fernet对象fernet=Fernet(key)#要加密的原始数据message=b"Hell......
        • 实验7_文件应用编程
          task4.c#define_CRT_SECURE_NO_WARNINGS#include<stdio.h>intmain(){longi=0;charch;FILE*fp;fp=fopen("c://data//data4.txt","r");while(!feof(fp)){ch=fgetc(fp);if(ch!=''&&ch!='\n......
        • Python接口自动化之文件上传/下载接口详解
          〇、前言文件上传/下载接口与普通接口类似,但是有细微的区别。如果需要发送文件到服务器,例如:上传文档、图片、视频等,就需要发送二进制数据,上传文件一般使用的都是Content-Type:multipart/form-data数据类型,可以发送文件,也可以发送相关的消息体数据。反之,文件下载就是将二进制格式......
        • vue上传图片到指定文件夹
          vue代码<template><divclass="app-container"> <divclass="wenben"><el-upload:disabled="dis==0?true:false"class="upload-demo":action="uploadUrl":on-......
        • 上机编程“文件树”学习交流
          在某OS的文件系统中(同一目录下的目录和文件不会重名),假设当前目录为根目录,给定若干个已有路径(目录或文件),其格式如下:·         输入均为根目录下的路径,且不会重复给出;·         路径中目录或文件名仅包含字母、数字和分隔符/;·         路径结尾带......
        • centos7 下安装 moodle历史命令(未能包含vim 修改配置文件)
          1init02cd"/data/webapps/moodle"3cd/data/webapps/4ls5ll6cdmoodle/7ls8ll9vimlib/outputrenderers.php10ll11cd../12ll13chmod-R0777./moodle/14ll15......
        • 【SpringBootWeb入门-16】Mybatis-基础操作-多条件查询操作&XML文件配置SQL
          1、章节回顾上一篇文章我们讲解了Mybatis的增改查操作,本篇继续学习Mybatis的复杂查询操作(多条件查询)。2、增删改查操作-多条件查询操作根据条件姓名、性别、入职时间来查询员工表emp数据,其中员工姓名支持模糊匹配,性别进行精确匹配,入职时间进行范围查询,查询结果按照最后修改时间......
        • 实验7 文件应用编程
          task4#define_CRT_SECURE_NO_WARNINGS1#include<stdlib.h>#include<stdio.h>#defineN100intmain(){FILE*fp;charn,*p;intcount=0;fp=fopen("data4.txt","r");while(feof(fp)==0){n=fgetc(fp);if(n!=''&......