首页 > 其他分享 >用pageOffice控件实现 office 文档在线编辑Word插入另外word文档的功能

用pageOffice控件实现 office 文档在线编辑Word插入另外word文档的功能

时间:2023-08-04 15:47:30浏览次数:42  
标签:控件 Word doc 书签 插入 文档 word

OA办公中,业务需要编辑word文档,需要插入另外word文档的功能。

怎么实现编辑word文档插入另外word文档呢?

2 实现方法

通过pageOffice实现简单的在线打开编辑word时,
通过设置
关键代码:

WordDocument worddoc = new WordDocument();
//先在要插入word文件的位置手动插入书签,书签必须以“PO_”为前缀
//给DataRegion赋值,值的形式为:"[word]word文件路径[/word]、[excel]excel文件路径[/excel]、[image]图片路径[/image]"
DataRegion data1 = worddoc.openDataRegion("PO_p1");
data1.setValue("[word]doc/1.doc[/word]");
DataRegion data2 = worddoc.openDataRegion("PO_p2");
data2.setValue("[word]doc/2.doc[/word]");
DataRegion data3 = worddoc.openDataRegion("PO_p3");
data3.setValue("[word]doc/3.doc[/word]");
poCtrl1.setWriter(worddoc);

就可以实现编辑Word插入另外word文档的功能

3 实现过程

以java的springboot框架为例

1 集成pageOffice

https://www.zhuozhengsoft.com/dowm/
image
从pageOffice官网
下载页面,找到springboot的集成示例,按照里面的集成明说,可以集成到自己的springboot项目中。

2 在线打开编辑word

image
可以按照这个示例首先实现最基本的打开word的方法。

3 文档中设置数据区域方法

数据区域的技巧
https://www.kancloud.cn/pageoffice_course_group/pageoffice_course/663125
模板中如何指定位置(PageOffice中的“数据区域”)
模板中必须标记好数据要插入的位置,这样才可以实现用程序插入数据到文件的相应位置,就是说要想生成文件,数据的位置必须用某种元素来标记出来。使用PageOffice开发,常用的是Word书签来标记要插入数据的位置。
一般的开发人员使用Word比较少,可能不清楚Word书签是怎样插入的,下面简单的介绍一下插入书签的方法。
第一种方法:把光标定位到需要标记数据位置的地方,点Word菜单中的“插入”-“书签”,就会弹出一个标题为“书签”的对话框(如下图所示),输入新书签的名称,注意:书签名必须以字母、汉字、中文标点等开头,可以包含数字但中间不能有空格(用PageOffice开发的时候不推荐使用中文命名书签名)。点右侧的“添加”按钮,新的书签名将出现在下面的列表中。
image
第二种方法: 选择几个文字、或一段文字、或者选择一段包含表格和图片的内容,为选中的内容指定书签的对象,然后执行第一种方法的同样操作,“插入”→“书签”……
注意:如果新插入位置或新对象采用的是已有的书签名,原有的书签将自动取消。

PageOffice示例代码中的模板在制作的时候,多采用第二中方法定义书签,插入书签之前会先写一个标示性的词语用中括号括起来,比如:[姓名],然后选中“[姓名]”,再插入书签。这样做的目的是便于在查看或编辑模板数据位置的时候一目了然。

4 设置数据区域 注意事项

方便显示书签可以设置如下
image
在使用PageOffice开发的过程中,为了避免出现与用户自己定义的书签出现冲突,要求插入的书签名称必须以“PO_”开头。注意是字母O,不是数字0。在PageOffice的概念里提到的数据区域,本质上就是书签,但是只有“PO_”开头的书签才叫数据区域,请大家注意这点。
模板的制作方法
制作模板的过程,实际上就是插入数据区域也就是插入“po_”开头的书签,标记在生成文件的时各个数据在文件查插入的位置,但是鉴于Word书签的特点:书签可以相互包含、相邻的书签会互相干扰,插入数据区域的时候需要一些技巧和注意事项,在这里一并介绍一下。
① 插入数据区域前选择的文本内容如果不是故意要跨段的话,不要选择段落末尾的回车换行符“┙”。
② 如果说“[姓名]”就是要插入的数据区域的文本标示,那么请在“[”前和“]”后分别插入一个空格变成“ [姓名] ”,但是选择的数据区域标示的时候不要选择中括号前后的空格,只选择“[姓名]”,然后点Word菜单中的“插入”-“书签”,命名为:PO_name。
③ 插入的任意的两个数据区域不能首尾相连。不允许前面的数据区域的末尾后面紧接着就是后一个数据区域的开始,中间连空格都没有,这是不允许的。
④ 插入的数据区域不要互相包含。不推荐一个数据区域中完整的包含了另一个数据区域,这样做在程序生成文件的时候,不会出现错误,但是没意义,除了造成使用的混乱之外没有好处。
在生成文件的时候,数据区域的标示会被程序中设置的值自动替换掉。

5 通过代码写入数据

设置好模板后。如图
image
示例参考
image

java代码

@RestController
@RequestMapping(value = "/WordResWord/")
public class WordResWordController {
    @RequestMapping(value = "Word", method = RequestMethod.GET)
    public ModelAndView showWord(HttpServletRequest request, Map<String, Object> map) {
        PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);
        poCtrl.setServerPage(request.getContextPath() + "/poserver.zz");//设置服务页面

        WordDocument worddoc = new WordDocument();
        //先在要插入word文件的位置手动插入书签,书签必须以“PO_”为前缀
        //给DataRegion赋值,值的形式为:"[word]word文件路径[/word]、[excel]excel文件路径[/excel]、[image]图片路径[/image]"
        DataRegion data1 = worddoc.openDataRegion("PO_p1");
        data1.setValue("[word]/doc/WordResWord/1.doc[/word]");
        DataRegion data2 = worddoc.openDataRegion("PO_p2");
        data2.setValue("[word]/doc/WordResWord/2.doc[/word]");
        DataRegion data3 = worddoc.openDataRegion("PO_p3");
        data3.setValue("[word]/doc/WordResWord/3.doc[/word]");

        poCtrl.setWriter(worddoc);
        poCtrl.setCaption("演示:后台编程插入Word文件到数据区域");
        //隐藏菜单栏
        poCtrl.setMenubar(false);
        //隐藏自定义工具栏
        poCtrl.setCustomToolbar(false);
        //打开Word文档
        poCtrl.webOpen("/doc/WordResWord/test.doc", OpenModeType.docNormalEdit, "张三");
        map.put("pageoffice", poCtrl.getHtmlCode("PageOfficeCtrl1"));
        ModelAndView mv = new ModelAndView("WordResWord/Word");
        return mv;
    }

}

html代码

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"
      xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">


<head>
    <title>后台编程插入Word文件到数据区域</title>

</head>
<body>
<div style="font-size: 12px; line-height: 20px; border-bottom: dotted 1px #ccc; border-top: dotted 1px #ccc;
        padding: 5px;">
    关键代码:<span style="background-color: Yellow;"> <br/>DataRegion dataRegion
            = worddoc.openDataRegion("PO_开头的书签名称");
            <br/>
            dataRegion.setValue("[word]doc/1.doc[/word]");</span><br/>
</div>
<br/>
<form id="form1">
    <div style="width: auto; height: 700px;" th:utext="${pageoffice}">
    </div>
</form>
</body>
</html>

通过以上代码,就可以实现编辑Word插入另外word文档的功能

6效果图

image
文档打开后,直接已经插入word中的三个文档内容。

7总结

用pageOffice控件实现 office word文档 编辑Word插入另外word文档的功能

转载:用pageOffice控件实现 office 文档在线编辑Word插入另外word文档的功能

标签:控件,Word,doc,书签,插入,文档,word
From: https://www.cnblogs.com/qq742655/p/17606088.html

相关文章

  • OpenAI API中文文档 - 快速开始
    快速开始概述寻找ChatGPT?请前往chat.openai.com。OpenAI已经训练了先进的语言模型,非常擅长理解和生成文本。我们的API提供了访问这些模型的接口,并可以用于解决几乎任何涉及处理语言的任务。在这个快速入门教程中,您将构建一个简单的示例应用程序。在此过程中,您将学习关键概念......
  • Vue 路由守卫使用文档
    一、概述Vue路由守卫是VueRouter提供的一种机制,用于在路由导航过程中对路由进行控制和过滤。通过使用路由守卫,我们可以在路由跳转前、跳转后以及跳转过程中执行一些自定义的逻辑。二、路由守卫的类型Vue路由守卫主要分为全局守卫、路由独享守卫和组件内守卫三种类型。全局守......
  • 这才是!21 世纪的 API 文档该有的样子!
    前后端差点打起来事情是这样的:今天我们公司的后端说他接口写完了,并分享了一个接口文档给我。用的就是SwaggerUI自动生成的那种接口文档,就像这种:这种Swagger文档我每次看着就头大,毛病多多:查看多级模型时要一级级点开API多的时候找起来特别吃力提交参数为JSON的时候不能格式......
  • 软件开发全文档下载(几百份软件阶段各类文档)
    一、前言软件开发工作中,在#夏天生活图鉴#计划,需求分析,开发实施,测试,评审,交付验收,以及投标等其他过程中,会产生大量的文档,为了规范项目整个流程,亦或是为了验收交付提供材料,或者是为了资质评审,我们都需要这些文档来支撑,下面我把这些文档罗列出来给大家参考,里面有好多套不同项目的模板......
  • Health Kit文档大变样,一起尝鲜!
    HealthKit文档全新升级,开发场景更清晰,聚焦你关心的问题,快来一起尝鲜!文档入口请戳:文档入口~如果你是运动健康的老朋友,可以从旧文档页面上方的提示信息中进入:最新版本哦。一、架构调整更易读——端/云开发一目了然HealthKit新架构文档从开发者视角出发,导航目录设计从端侧、云......
  • 【总结】超1000页有三AI文档资源领取方法汇总!
    这几年我们平台输出了很多内容,有免费的也有付费的,有图文也有视频,本次对我们所有文档类资源领取方法做一个汇总。有三的书相关资料至今有三已经出版了4本书,分别是《深度学习之图像识别》,《深度学习之模型设计》,《深度学习之人脸图像处理》,《深度学习之摄影图像处理》,介绍如下:一些书......
  • Educational 151 DIV2 T3 strong password
    T3strongpassword就是对于输入的每一个\(l,r\),我们遍历\(s[l]~s[r]\),对于每次遍历,我们设置一个临时指针\(cur\),然后通过指针右移寻找所需要的值在外面我们弄两个指针,分别代表每次遍历\([l,r]\)的区间的指针\(nmx\)和全局指针\(mx\)我们用临时指针更新单次区间的......
  • Linux平台C++读写Word文档(DuckX库)
    1、安装cmake如果没有cmake或者cmake版本太旧,都需要进行重新安装此次推荐直接安装编译好的软件包进入官网:https://cmake.org/download/下载后直接在拷贝到系统里进行解压添加环境变量vim/etc/profile添加下面这条命令,路径换成自己安装的路径exportPATH=$PATH:/root......
  • Vhost-user协议 — QEMU 8.0.0 文档 翻译版
    Vhost-user协议—QEMU8.0.0文档翻译版(先机翻,然后自己人工翻译一整天)PDF版免费送! 联系qq:2426149954,备注:“QEMU+PDF版 ”;Word版RM5!联系qq:2426149954,备注:“QEMU+Woed版 ”。  欢迎联系~       ......
  • Haxx curl 控件版本升级
    Haxxcurl7.65.1_2之前版本中存在代码注入漏洞,将版本升级可解决代码注入漏洞(CVE-2019-5443)https://curl.se/download.html  官网下载windows版本升级  2,解压,复制curl.exe到Windows的系统环境目录,默认是C:\Windows\System32 3,下载安装VisualStudio2010C++Runt......