PageOffice 开发者中心 PageOffice 开发者中心
首页
文档
  • 后端Java手册 (opens new window)
  • 后端.netcore手册 (opens new window)
  • 前端JavaScript手册 (opens new window)
下载
购买 (opens new window)
首页
文档
  • 后端Java手册 (opens new window)
  • 后端.netcore手册 (opens new window)
  • 前端JavaScript手册 (opens new window)
下载
购买 (opens new window)
  • 开始

  • 通用控制

  • Word

    • 常用控制

      • 强制留痕模式编辑
      • 显示痕迹列表效果
      • 只读打开文档
      • 文件在线安全浏览
      • 比较两个Word文件的内容差异
      • 编辑时禁止拷贝到外部
      • 禁止Word中鼠标右键
      • 多用户同时编辑
      • Word多文件合并
      • 控制Word编辑区域(局部编辑)
      • 添加水印
      • 插入分页符
      • 模板套红
      • 从模板起草文件
      • 创建空白的word、excel、ppt
      • 用户自定义模板中数据区域
      • 用户自定义模板中数据标签
      • 数据区域与数据标签的区别
        • Word全文检索
        • Word套打
        • 锁定文本样式
        • 用前端框架内置对话框在Word中填空填表
        • 保存Word首页为图片
      • 动态填充

      • 用户输入提交

      • JS控制

    • Excel

    • PDF

    • FileMaker

    • PPT

    • 更多

    目录

    数据区域与数据标签的区别

    # 数据区域与数据标签的区别

    数据区域(DataRegion)与数据标签(DataTag)都是PageOffice创造的概念,是为了实现动态填充Word模版生成文件而开发的,但是二者之间又有所不同,各自有着自身的优势与特点。

    • 数据区域(DataRegion)本质上就是书签,但是书签名必须以“PO_”开头,并由字母和数字组成,中间不能有空格。这样做是为了避免与用户自己定义的书签出现冲突,所以要求插入的书签名称必须以“PO_”开头。注意是字母o,不是数字0。假如使用DataRegion来定义模板中动态填充数据的位置,那么直接打开一个Word文件,在其中添加“PO_”开头的书签即可制作word模板。例如,打开一个Word文件后,可以通过选中需要标记为书签的文字,例如“[姓名]”,然后点击Word菜单中的“插入”-“书签”来添加书签,在弹出的“书签”对话框中,输入新书签的名称PO_userName,并点击右侧的“添加”按钮,即可完成一个数据区域的定义。效果如下图所示:

    • 数据标签(DataTag)只是一种辨识度比较高的文本字符串,样式完全由开发人员自己说了算。比如这样的数据标签“【##日期$$】”,编写代码openDataTag("【##日期$$】")即可返回数据标签对象,进而可以对此数据标签填充数据或设置样式等操作。假如使用DataTag来定义模板中动态填充数据的位置,那么可以直接打开一个Word文件,在其中添加自定义特殊格式的文本即可制作word模板。例如,打开一个Word文件后,直接插入“{部门名}”、“{姓名}”、“【时间】”等类似的、辨识度很高的、特殊格式的文本。效果如下图所示:

    # 两者对比

    1. DataRegion既可手动通过Office工具栏中的“插入”→“书签”,向Word模版中插入书签,又可通过程序动态在Word模版中某些插入书签,书签的插入方式更加的灵活和自由。用程序动态创建书签的代码如下:
    WordDocumentWriter doc = new WordDocumentWriter();
    //创建数据区域,createDataRegion 方法中的三个参数分别代表“新建的数据区域名称”,“数据区域将要插入的位置”,
    //“与新建的数据区域相关联的数据区域名称”,若当前Word文档中尚无数据区域(书签)或者想在文档的最开头创建时,那么第三个参数为“[home]”
    //若想在文档的结尾处创建数据区域则第三个参数为“[end]”
    DataRegionWriter dataRegion1 = doc.createDataRegion("reg1", DataRegionInsertType.After, "[home]");
    dataRegion1.setValue("第一个数据区域\r\n");
    DataRegionWriter dataRegion2 = doc.createDataRegion("reg2", DataRegionInsertType.After, "reg1");
    dataRegion2.setValue("第二个数据区域");
    

    而DataTag只能在Word模版中手动插入,无法编写程序动态插入DataTag,但是在模版中插入DataTag的方法更加的简单和方便,直接在要动态填充数据的地方手动输入自定义的、有特殊标示的字符串即可,而无需使用工具栏操作。

    1. DataRegion本质上是书签,而Word中书签的名称是唯一的,所以Word模板中任何一个DataRegion都是唯一的,只能在模板中出现一次,也就意味着一个数据与word模板中填充数据的位置是一一对应的;DataTag本质上只是一个有特征的字符串,任何一个DataTag都可以在同一Word模板中出现多次,也就意味着一个数据可以与同一Word模板中多个数据位置相对应。在动态填充数据时可根据实际情况将两者结合使用,文档中一个数据只填充到一个位置时使用DataRegion,多个位置需要填充同一数据时用DataTag。
    2. DataRegion本质上是书签,所以动态填充数据生成文件后,DataRegion的书签依然存在,如果用户修改了DataRegion中的内容,还可以通过程序获取到DataRegion的新值;由于对DataTag动态填充数据的本质就是简单的字符串替换,所以对DataTag动态填充数据生成文件后,DataTag就不存在了,也就无法像DataRegion一样做后续的操作。
    3. DataRegion本质上是书签,动态填充数据生成文件后DataRegion的书签依然存在,所以如果需要再次动态填充修改DataRegion的数据值,依然是可以的;由于对DataTag动态填充数据的本质就是简单的字符串替换,所以无法对DataTag做二次数据填充。

    综上所述,数据区域与数据标签有着各自的功能特点,且两者相辅相成,开发人员结合实际需求选择使用这两个功能,就能给用户提供自定义word模板的功能,实现“开发人员定义数据区域和数据标签,用户使用数据区域和数据标签”的分工合作效果,且规范了用户编辑Word模板的操作(参考文章:用户自定义模板中数据区域和用户自定义模板中数据标签)。而在最终需要动态填充数据到word模板中生成正式文件时,开发人员只管编写代码给所有的数据区域和数据标签赋值即可,无需关心用户自定义的word模板中到底使用了哪些,因为那些没有使用的区域和标签会被PageOffice自动忽略掉;而最终用户也可以根据自己的实际需要,定义word模板中各项数据及其位置,无需关心数据从哪里来,当业务需求发生简单的变化时,可以自主修改或新建word模板来满足新的需求。这样一来,不管是开发人员还是用户,都能在一定程度上从纷杂多变的业务需求中解脱出来。

    上次更新: 2024/08/05, 15:18:45
    PageOffice | Copyright © 2013-2026 卓正软件 京ICP备12010902号-2 京公网安备 11010502019270号
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式