用pageOffice控件实现 office 文档在线编辑Word插入另外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/

从pageOffice官网
下载页面,找到springboot的集成示例,按照里面的集成明说,可以集成到自己的springboot项目中。
2 在线打开编辑word

可以按照这个示例首先实现最基本的打开word的方法。
3 文档中设置数据区域方法
数据区域的技巧
https://www.kancloud.cn/pageoffice_course_group/pageoffice_course/663125
模板中如何指定位置(PageOffice中的“数据区域”)
模板中必须标记好数据要插入的位置,这样才可以实现用程序插入数据到文件的相应位置,就是说要想生成文件,数据的位置必须用某种元素来标记出来。使用PageOffice开发,常用的是Word书签来标记要插入数据的位置。
一般的开发人员使用Word比较少,可能不清楚Word书签是怎样插入的,下面简单的介绍一下插入书签的方法。
第一种方法:把光标定位到需要标记数据位置的地方,点Word菜单中的“插入”-“书签”,就会弹出一个标题为“书签”的对话框(如下图所示),输入新书签的名称,注意:书签名必须以字母、汉字、中文标点等开头,可以包含数字但中间不能有空格(用PageOffice开发的时候不推荐使用中文命名书签名)。点右侧的“添加”按钮,新的书签名将出现在下面的列表中。

第二种方法: 选择几个文字、或一段文字、或者选择一段包含表格和图片的内容,为选中的内容指定书签的对象,然后执行第一种方法的同样操作,“插入”→“书签”……
注意:如果新插入位置或新对象采用的是已有的书签名,原有的书签将自动取消。
PageOffice示例代码中的模板在制作的时候,多采用第二中方法定义书签,插入书签之前会先写一个标示性的词语用中括号括起来,比如:[姓名],然后选中“[姓名]”,再插入书签。这样做的目的是便于在查看或编辑模板数据位置的时候一目了然。
4 设置数据区域 注意事项
方便显示书签可以设置如下

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

示例参考

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效果图

文档打开后,直接已经插入word中的三个文档内容。
7总结
用pageOffice控件实现 office word文档 编辑Word插入另外word文档的功能
转载:用pageOffice控件实现 office 文档在线编辑Word插入另外word文档的功能
用pageOffice控件实现 office 文档在线编辑Word插入另外word文档的功能的更多相关文章
- Office文档在线编辑的实现之二
讲述了如何通过iis的webdav支持实现客户端的office直接编辑服务器上的文件,本篇将讲解如何实现客户端的office直接编辑数据库中的二进制形式保存的office文件. 实现的关键:模拟IIS ...
- Office文档在线编辑的实现之一
因为项目的关系,研究了一下Office的在线编辑功能,写出来共享一下. Office xp之后的版本支持通过webdav协议(http的扩展)直接编辑服务器上的文件. IIS(6.0)支持webdav ...
- wps金山文档在线编辑--.Net 接入指南
一.申请成为服务商,对金山文档在线服务进行申请 ①进入官网 https://open.wps.cn/ ②申请后如下图,点击右下角的进入服务 ③申请成功后 ④数据回调URL一定是服务器地址,本次我使用的 ...
- 【WPF】WPF开发用户控件、用户控件属性依赖DependencyProperty实现双向绑定、以及自定义实现Command双向绑定功能演示
前言: Wpf开发过程中,最经常使用的功能之一,就是用户控件(UserControl)了.用户控件可以用于开发用户自己的控件进行使用,甚至可以用于打造一套属于自己的UI框架.依赖属性(Dependen ...
- ActiveReports报表控件 V13 正式发布,提供在线报表设计和自适应报表布局
重磅消息, ActiveReports V13 正式发布!本次更新 ActiveReports 将给您带来全新的报表设计体验:提供在线报表设计器.提供响应式布局和屏幕尺寸自适应能力.提供全新的图表…… ...
- 文档控件NTKO OFFICE 详细使用说明之预览Excel文件(查看、编辑、保存回服务器)
1.在线预览Excel文件 (1) 运行环境 ① 浏览器:支持IE7-IE11(平台版本还支持Chrome和Firefox) ② IE工具栏-Internet 选项:将www.ntko.com加入到浏 ...
- 文档控件NTKO OFFICE 详细使用说明之预览word编辑保存回服务器
1.在线预览Word文件 (1) 运行环境 ① 浏览器:支持IE7-IE11(平台版本还支持Chrome和Firefox) ② IE工具栏-Internet 选项:将www.ntko.com加入到浏览 ...
- 文档控件NTKO OFFICE 详细使用说明之预览PDF文件(禁止打印、下载、另存为、防抓包下载)
1.在线预览PDF文件(禁止打印.下载.复制.另存为) (1) 运行环境 ① 浏览器:支持IE7-IE11(平台版本还支持Chrome和Firefox) ② IE工具栏-Internet 选项:将ww ...
- 使用WebDAV实现Office文档在线编辑
Office的文档处理能力是非常强大的,但是它是本地资源,在Office Web App尚未成熟前,仍需要使用本地能力来进行文档编辑,可是现代的系统的主流却是B/S,所以在B/S中调用本地的Offic ...
- WPF样式统一之DevExpress设置窗体,控件为Office风格
DevExpress相信不少人用过,虽然人家不是免费的,但是用过的应该都知道,确实是花了心血的C#插件,下面来介绍下在DevExpress下如何统一设置自己的WPF程序为经典Windows风格. 窗体 ...
随机推荐
- #AC自动机#洛谷 2444 [POI2000]病毒
题目 给定若干01串,问是否存在无限长的01串任意子串不是给定的若干串 分析 如果在AC自动机上跳到了访问过的前缀即代表存在一个循环可以无限跳, 在AC自动机上记录哪些状态是不能访问的,在AC自动机上 ...
- flutter系列之:按比例缩放的AspectRatio和FractionallySizedBox
目录 简介 AspectRatio FractionallySizedBox 总结 简介 我们在构建UI的时候,为了适应不同的屏幕大小,通常需要进行一些自适应的配置,而最常见的自适应就是根据某个宽度或 ...
- 一文读懂java中的Reference和引用类型
目录 简介 强引用Strong Reference 软引用Soft Reference 弱引用weak Reference 虚引用PhantomReference Reference和Referenc ...
- 当使用git出现提示untracked files时怎么办?
当使用 git 出现提示 untracked files 时怎么办? 背景介绍: 在使用 git 工具时,遇到如下错误. 报错内容: $ git status On branch master No ...
- 精通中间件测试:Asp.Net Core实战指南,提升应用稳定性和可靠性
引言 在上一章节我们实战了在Asp.Net Core中的项目实战,这一章节讲解一下如何测试Asp.Net Core的中间件. TestServer 还记得我们在集成测试中提供的TestServer吗? ...
- 2FA(双因素身份验证)之手机令牌(TOTP)逻辑
2FA(双因素身份验证)之手机令牌(TOTP)逻辑 纯猜测,没试过,有空试 分为移动端.客户端以及网页端 Steam那种属于APP是网页,客户端是网页,网页端也是网页,挺抽象的 关键点: 时间一致(时 ...
- HL7标准的版本
HL7V2 HL7v2是用于在系统之间交换临床和患者信息的最广泛使用的医疗保健消息传递标准.HL7v2的目标是使用代表临床事件信息的标准化消息(例如患者管理活动.人口统计.医疗订单.结果和财务信息)在 ...
- (已解决)安装PyMySQL出现问题--'pip' 不是内部或外部命令,也不是可运行的程序 或批处理文件
问题描述: 输入cmd,进入命令窗口,输入pip install pymysql时候出现下面的问题: 然后进入python环境中去输入还是报错: 问题原因:环境变量配置出错,cmd下无法调用pip程序 ...
- word文档怎么让封面没有页码,页码从正文开始(word 2019)
1.打开需要插入页码的文档,光标放在正文处的开头,然后点击word窗口中的 [布局] ---> 选择[分隔符] -->选择 [分节符] 下面的 [连续]; 2.然后选择word功能区 ...
- 力扣233(java)-数字1的个数(困难)
题目: 给定一个整数 n,计算所有小于等于 n 的非负整数中数字 1 出现的个数. 示例 1: 输入:n = 13输出:6示例 2: 输入:n = 0输出:0 提示: 0 <= n <= ...