使用过PageOffice动态生成word文档的人都知道,PageOffice可以给word文档的指定位置进行填充,这里我们所说的指定位置在PageOffice的专业术语里面有两个概念,一个叫做数据区域(DataRegion),另一个叫做数据标签(DataTag)。

  一、 概念

  数据区域:是Word文档中具有 "PO_" 前缀命名的书签所定位的文档区域。简单来说,数据区域就是一种特殊的Word书签对象,便于定位Word文档中的内容。

  数据标签:是任意的有效字符组成的特殊样式的字符串(如“【时间】”、“{姓名}”、“${name}”等等)作为标记,理论上这样的字符串(比如:“性别”、“地址”、“aa”、“bbcc”)也可以当做数据标签,但是不推荐使用,因为这样的标签不能从视觉上直观的看出word文档中包含了哪些数据标签。

  二、使用

  数据区域里面可以填充些的内容:文本、图片、Word文件、Excel文件。

    WordDocument doc = new WordDocument();
//填充文本
DataRegion dataRegion1 = doc.openDataRegion("PO_userName");
dataRegion1.setValue("张三");
//还可以给填充的文本设置字体,颜色,粗体等样式
dataRegion1.getFont().setColor(Color.blue);
dataRegion1.getFont().setSize(24);
dataRegion1.getFont().setName("隶书");
dataRegion1.getFont().setBold(true); //填充图片
doc.openDataRegion("PO_deptName").setValue("[image]img/123.jpg[/image]");
//填充word文件
doc.openDataRegion("PO_deptName").setValue("[word]doc/aabb.doc[/word]");
//填充excel文件
doc.openDataRegion("PO_deptName").setValue("[excel]doc/bbcc.xls[/excel]");

  数据标签中可以填充的内容:文本。

 

    WordDocument doc = new WordDocument();
//填充文本,还可以设置字体、颜色等样式
DataTag deptTag = doc.openDataTag("{部门名}");
deptTag.setValue("市场部");
deptTag.getFont().setColor(Color.GREEN);
deptTag.getFont().setName("宋体");
deptTag.getFont().setSize(28);

  三、区别

DataRegion类是要与书签结合使用的,既可以先在Word文档中插入以“PO_”开头的书签定义数据区域,再在程序中通过WordDocument类对象的OpenDataRegion(String DataRegionName)方法获取DataRegion对象;又可以通过WordDocument类对象的CreateDataRegion(String NewDataRegionName, DataRegionInsertType insertType, String RelativeDataRegionName)方法直接创建数据区域从而获取DataRegion类对象。而DataTag类是与Word文档中用户插入的自定义特征文本结合使用的。在程序中DataTag类对象只能通过OpenDataTag(String DataTagName)方法获取。

另外,数据区域的名称(即书签名称)必须以“PO_”开头,两个书签之间要有最少一个的有效字符,不能重复,数据区域的名称和Word文档中的位置是一一对应的。而数据标签的名称就是具有一定特征的Word字符串文本,便于定位Word文档中的内容,可以重复,数据标签的名称和Word文档中的位置是一对多的关系。也就是说,同一个Name的DataRegion只能表示Word文档中唯一一个位置,而在Word文档中相同的特征字符串可以在多处出现。

所以DataRegion的优点是:DataRegion既可以填充文档内容,还可以创建文档内容、提交用户在DataRegion里输入的内容、获取用户提交的DataRegion里的内容,而DataTag只能用于填充文档内容。DataRegion的缺点是:DataRegion无法简单重复,必须要设置不同的书签,而DataTag可以在文档中多处生成需要重复的内容。

而应该用DataTag还是用DataRegion,则应该视具体的需求而定。当用户要提交Word中某部分数据或者想要获取Word中提交的某部分数据时则必须要用DataRegion;当用户不需提交数据或者获取数据,并且填充的数据无重复项时,则两者均可;当用户不需提交数据或者获取数据,且填充的数据有多个重复项时,虽然两者均可,但是为了编程简便、代码高效,建议使用DataTag。

[原创]java向word模板中填充数据(总结)的更多相关文章

  1. [转载]java向word模板中填充数据(总结)

    使用过PageOffice动态生成word文档的人都知道,PageOffice可以给word文档的指定位置进行填充,这里我们所说的指定位置在PageOffice的专业术语里面有两个概念,一个叫做数据区 ...

  2. 向Word模板中填充数据

    现在有这样的需求,给Word文档的指定位置填充上特定数据,例如我们有一个终端,用来打印员工的薪资证明,对于一个公司来说,他的薪资证明模板是固定的,变化的地方是员工姓名,部门,职位等.我们只需要将这些指 ...

  3. POI往word模板中写入数据

    转: POI往word模板中写入数据 2018年03月24日 16:00:22 乄阿斗同學 阅读数:2977  版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn ...

  4. 读取word模板,填充数据后导出

    一.需求说明 定期生成word报告,报告中含有文本.表格.图表等元素,依次获取进行替换,保留原有样式,生成新的word文档 二.引入依赖 <dependency> <groupId& ...

  5. [原创]JAVA获取word表格中数据的方案

    上一个项目的开发中需要实现从word中读取表格数据的功能,在JAVA社区搜索了很多资料,终于找到了两个相对最佳的方案,因为也得到了不少网友们的帮助,所以不敢独自享用,在此做一个分享. 两个方案分别是: ...

  6. [原创]Java给word中的table赋值

    一.准备工作: 下载PageOffice for  Java:http://www.zhuozhengsoft.com/dowm/ 二. 实现方法: 要调用PageOffice操作Word中的tabl ...

  7. JAVA Freemarker + Word 模板 生成 Word 文档 (普通的变量替换,数据的循环,表格数据的循环,以及图片的东替换)

    1,最近有个需求,动态生成 Word 文当并供前端下载,网上找了一下,发现基本都是用 word 生成 xml 然后用模板替换变量的方式 1.1,这种方式虽然可行,但是生成的 xml 是在是太乱了,整理 ...

  8. 将excel中的数据填入word模板中-VBA

    首先将word模板中需要填写excel中数据的空白处用自己独特的字符串标记,比如   数据001  什么的.如下图: 这样,就可以用vba搜寻这些自己独特的标记来根据excel内容填充word了. 第 ...

  9. [原创]java操作word(一)

    一. 需求背景 在做项目的过程中,经常会遇到要把数据库数据导出到Word文件中的需求,因为很多情况下,我们需要将数据导出到WORD中进行打印.此需求可以通过用程序填充数据到word模板中来实现.所谓模 ...

随机推荐

  1. 在linux oracle 10g/11g x64bit环境中,goldengate随os启动而自己主动启动的脚本

    在linux.oracle 10g/11g x64bit环境中,goldengate随os启动而自己主动启动的脚本 背景描写叙述: goldengate安装于/u01/ggs文件夹下 rhel5.5 ...

  2. 【Python】向函数传递列表

    向函数传递列表 在实际使用中你会发现,向函数传递列表是比较实用的,这种列表可能包含名字.数字.可能更复杂的对象(字典) 假设向一个函数传递一堆水果,我们说出我们喜欢所有的水果 def Obj(frui ...

  3. Hive命令详解

    http://blog.itpub.net/22778222/viewspace-1119892/  官方文档翻译 http://blog.csdn.net/hguisu/article/detail ...

  4. Node.js学习笔记(2)——关于异步编程风格

    Node.js的异步编程风格是它的一大特点,在代码中就是体现在回调中. 首先是代码的顺序执行: function heavyCompute(n, callback) { var count = 0, ...

  5. 命令行编译sass

    一.安装ruby1.需要的软件设备: 2.安装过程:点击上图“应用程序”安装即可,注意安装过程中其中三项都需要打上勾.如若没有三项都打上勾则需要修改环境变量中的path路径后添加一个分号. 3.打开c ...

  6. 用Squid和DNSPod打造自己的CDN详细教程

    本篇教程是顺应大家的要求而写.教程内大部分都是奶罩在为VeryCD等大型网站构建CDN时所累积的经验.在一些概念方面可能会有一些错漏,希望 大家指正. 本教程面对的对象是个人站长,所以各方面会力求傻瓜 ...

  7. python classmethod方法 和 staticmethod

    classmethod() 是一个类方法,用来装饰对应的函数.被classmethod 装饰之后就无需实例化,也不需要在函数中传self,但是被装饰的函数第一个参数需要是cls来表示自身类.可以用来调 ...

  8. 【BZOJ2406】矩阵 二分+有上下界的可行流

    [BZOJ2406]矩阵 Description Input 第一行两个数n.m,表示矩阵的大小. 接下来n行,每行m列,描述矩阵A. 最后一行两个数L,R. Output 第一行,输出最小的答案: ...

  9. EasyPlayerPro windows播放器在播放RTMP视频显示重复异常问题解决

    问题来源 2017.12.18 今日有杭州某教育领域客户反馈EasyPlayerPro在播放一个rtmp源时,画面显示异常的问题.截图如下: 问题复现 一番思考, 将显示格式改为D3D显示, 正常, ...

  10. 使用SqlDependency监听MSSQL数据库表变化通知

    SqlDependency提供了这样一种机制,当被监测的数据库中的数据发生变化时,SqlDependency会自动触发OnChange事件来通知应用程序,从而达到让系统自动更新数据(或缓存)的目的. ...