使用过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模版填充_[转载]java向word模板中填充数据(总结)相关推荐

  1. java数组可扩展_[转载]Java数组扩容算法及Java对它的应用

    Java数组扩容的原理 1)Java数组对象的大小是固定不变的,数组对象是不可扩容的. 2)利用数组复制方法可以变通的实现数组扩容. 3)System.arraycopy()可以复制数组. 4)Arr ...

  2. java office 集成开发_[转载]Java集成PageOffice在线打开编辑word文件 - Spring Boot

    开发环境:JDK1.8.Eclipse.Sping Boot + Thymeleaf框架. 一. 构建Sping Boot + Thymeleaf框架的项目(不再详述): 1. 新建一个maven p ...

  3. java对象工厂池_[转载]Java对象池技术的原理及其实现

    作者:汪永好 出处:计算机与信息技术 责任编辑: 方舟 [ 2006-11-25 07:00 ] 摘 要 :本文在分析对象池技术基本原理的基础上,给出了对象池技术的两种实现方式.还指出了使用对象池技术 ...

  4. java生成sm2证书_(转载)Java使用IText实现PDF签章

    前文讲到了如何使用Adobe的PDF工具软件进行电子印章应用.在实际应用中还有一种情形就是需要将电子印章功能集成在我们开发的系统里,这里就要用到一些PDF的二次开发库了.做过相关开发的同学应该知道常用 ...

  5. java throw 什么意思_[转载]java中throw和throws的区别

    throw是一种控制程序流程的特殊方法而已.没有相应的catch的话,可以中止当前的方法继续执行. 关键字:throws 声明方法时候,如果不声明throws的话,那么一般的Exception都要在这 ...

  6. java 从控制台读取_转载 java从控制台读取输入的方法

    import java.io.BufferedReader;   import java.io.IOException;   import java.io.InputStreamReader;   i ...

  7. java dijkstra算法代码_[转载]Java实现dijkstra算法: 地图中任意起点寻找最佳路径...

    最近在复习java,下学期要用,写这个练手.  技术较粗糙,见谅. 代码里用的是这幅地图,根据实际情况更改,在addNode方法中 这个是运行结果,起点和终点在 运行wrap(String qidia ...

  8. java四叶玫瑰_[转载]java编程——四叶玫瑰线

    package edu.hit.hd.zyl; import java.awt.*; import java.awt.event.*; import javax.swing.*; public cla ...

  9. java项目----教务管理系统_基于Java的教务管理系统

    java项目----教务管理系统_基于Java的教务管理系统 2022-04-22 18:18·java基础 最近为客户开发了一套学校用教务管理系统,主要实现学生.课程.老师.选课等相关的信息化管理功 ...

最新文章

  1. Linux日常运维管理技巧
  2. mybatis sql打印输出位置
  3. 算法入门书籍--2022.04.04
  4. 阿里巴巴开源技术汇总:115个软件(五)
  5. NetAug(网络增强)—Dropout的反面
  6. JavaScript警告框中的新行
  7. 老兵不死:Radionomy正式宣布收购Winamp
  8. HenCoder自定义View学习 - 自定义绘制学习笔记
  9. Linux文件打包tar
  10. 自动阅读专业版第七次更新---原薅羊毛专业版
  11. 第四章 基于QT和DCMTK的Dicom 图像浏览器---检查文件夹下Dicom序列个数
  12. 虚拟拨号服务器怎么用,windows实现虚拟拨号服务器
  13. 【量化交易】 量化因子 情绪类因子计算
  14. android监听点击通知栏,android使用NotificationListenerService监听通知栏消息
  15. Mac系统升级Python版本(Python2.7升级到Python3.8.2)
  16. [转]忘记开机密码怎么办
  17. 刀塔2国服服务器都未响应,电脑中玩dota2卡死出现无响应蓝屏红字warning:connection problem如何解决...
  18. html5 气泡文字提示框,css实现气泡文字提示框代码教程
  19. Android系统启动流程4---init进程的工作流程
  20. Django前后端分离1——jwt

热门文章

  1. add a legend to a boxplot in MATLAB
  2. 怎么把java程序放进php_如何在php脚本中执行Java程序?
  3. 计算机二级web题目(3)--HTML基础
  4. mysql插入另一个表中数据_MySql中把一个表的数据插入到另一个表中的实现
  5. 计算机减法英语,英语加减乘除的表达
  6. redis 能不能监听特定的key失效_php监听redis key失效触发回调事件
  7. G1垃圾收集器设计目标与改良手段【纯理论】
  8. day3----python变量与常量
  9. DHCP服务(dhcpd)
  10. 深入理解Python中的元类(metaclass)