导出WORD或WPS格式文档

来自企业管理软件文档中心
2021年3月6日 (六) 18:22Even讨论 | 贡献的版本

(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索

一、简介

在使用云表的过程中,我们都知道可以将表单或总表导出为Excel表格,但有时我们还需要将表单导出为word文档(如系统中的公告、合同表单或参考资料等),根据使用者的需求,云表开发了将表单导出为word文档的功能。


二、使用说明

具体方法分为2步:

1、制作Word文档的样式模版

2、在云表中进行配置

2.1 制作导出Word样式模板

什么是样式模版?

样式模版是用于记录Word文档中数据样式的,和云表的模版作用一样,Word样式模版除了样式以外,同样有数据项。

在Word文档中,创建与云表模板相同的数据项,按照样式模版的编写规则生成xml文件。

此xml文件就是导出Word文档的样式模板,通过它,我们就可以导出无数个相同格式的文档。

什么是标签?

程序通过识别“标签”找到数据要填入的位置,可以理解为Word样式模版的标签就是云表模版中的数据项。

标签共有N种,我们需要了解每种标签的编写规则。


<1>普通标签

  • $[姓名$] 就是一个普通标签,对应“姓名”数据项。
  • 普通标签分三个部分,分别是“标签头”、“标签尾”和“标签内容”,用于管理“文本”数据项。

1、标签头

  • 标签头是程序识别标签开始的标志,用英文格式的 $[ 表示。

2、标签尾

  • 标签尾是程序识别标签结束的标志,用英文格式的 $] 表示。
  • 注意:标签头和标签尾就如同“左括号”和“右括号”,必须成对出现才是一个完整的标签。只有完整的标签才能被程序识别;

3、标签内容

  • “标签头”和“标签尾”组合在一起,就成了一个“数据项”,至于这是什么数据项,就要看“标签内容”了。
  • 标签内容是填写在普通标签中,用于匹配云表模版中的数据项,所以标签内容要与模版定义的数据项名称一致;
  • 如:$[姓名$] 就对应云表模板中“姓名”数据项。


<2>图片标签

  • 和普通标签类型类似,除了标签头标签尾标签内容以外,还有“占位图”组成。
  • 图片标签的标签头:为了让程序识别这个标签对应的是图片数据项,在标签头后面需要加上“[图片]”作为标识。
  • 图片标签的占位图:为了控制图片在导出文档中的位置和大小,需要在图片标签后面上传一张图片,注意图片环绕形式只能是嵌入型,这样图片可以是任意内容,因为在导出时,会被替换成表单中图片数据项的内容。

如:$[[图片]合影$]

“[图片]”是特殊标识,让系统判断该数据项是图片数据类型;“合影”就是数据项的名称。


$[[图片]合影$]

NDCWD1.png
 
  •   
  •   
  •   
  •   
  •   
  •   


<3>循环标签

$[[循环]明细表1$] $[明细表1.标题$] $[[结束循环]明细表1$]循环标签是一种特殊的标签类型,用于明细表的数据项管理,可细分为“明细表行循环”和“段落循环”。

和图片标签类似,需要在普通标签的基础上给程序做特殊的“标识”。

1、循环标签的标签头和标签尾:

  • 在普通标签头后增加[循环],并在标识后填写明细表的名称,即 $[[循环]明细表1$]
  • 在普通标签尾后增加[结束循环],并在标识后填写明细表的名称,即 $[[结束循环]明细表1$]
  • 标签头和标签尾仍然要配套使用。

2、循环标签的明细表数据项标签:

格式如下: $[明细表1.标题$] ,“$[ $]”之间的内容是明细表的数据项,写法为“明细表名称.数据项名称”;这个格式跟普通标签非常相似,只能在循环标签的标签头和标签尾之间使用。


<3.1>Word表格行循环

如果需要将明细表的内容在Word文档中,以表格形式进行循环显示,需要将两个标签分别放在表格数据行的第一个格子及最后一个格子,中间的单元格则填入明细表数据项标签,如下图:

NDCWD0.png


<3.2>段落循环

如果想实现以段落或者的循环,则将两个标签分别放在需要循环的段落的前和后两个位置,如:


  • $[[循环]明细表1$]
  • 用户名: $[明细表1.姓名$]
  • 日期: $[明细表1.日期$]
  • $[明细表1.正文内容$]
  • $[[结束循环]明细表1$]


<4>高级标签

高级标签是指某些特殊数据类型的特殊用法,遵循freemarker的标签语法,但是需要在高级标签外面加"$["“$]”作为标签的开始和结束,以下是一些常用的高级用法,其他更多用法可参考https://www.cnblogs.com/hwaggLee/p/4541586.html。

<4.1>日期类型数据项转换显示

当数据项的数据类型是日期类型,如果需要指定显示精度,可以在数据项后面加“_对象”,再配合标签格式进行定制化显示:

写法:$[最后更新时间_对象?string(“yyyy-mm-dd HH:mm:ss zzzz”)$]

效果:2017-12-23 14:12:20 中国标准时间

<4.2>数字类型数据项转换显示

当数据项的属性是数字类型,如需要指定显示精度,可以在数据项后面加“_对象”,再配合格式化标签进行显示;

数字格式化可采用$[#{字段名称;format}$]的形式来格式化数字,其中format可以是:

mX:小数部分最小X位

  • MX:小数部分最大X位

写法:$[#{浏览次数;m2}$]

效果:123.00

<4.3>真假类型数据项转换显示

如果数据项属性是判断类型(也叫是否型、布尔型),可以对值的结果“真”/“假”,分别显示不同内容。

写法:$[是否打印?string(“已打印”,“未打印”)$]

效果:已打印

<4.4>判断语句

如果需要对模板某部分内容进行判断是否显示,可以用以下if标签进行判断,以下是if标签的两种常用用法:


1、判断是否有值,加两个英文的?在需要判断的数据项后面,如果需要判断是否为空,则在数据项前面再加一个!,如:

  • $[[#if !正文内容??]$]$]
  • 这个是没有正文内容的
  • $[[/#if]$]$]


2、判断字符串相等与否,可以使用判断符号相等“==”或者不相等“!=”:

  • $[[#if 是否合影 ==“是”]$]$]
  • 这个是有合影的
  • $[[/#if]$]$]

模板内容举例

NDCWD2.png


注意事项:

1、标签开始$[和标签结束$]这两个字符,必须要同一字体,中间不能有空格,而且需要同时录入,如果生成word之后,如果这两个标签标记没有被数据源替换,请重新键盘录入(这是因为Word会把这两个字符分开不同段落);

2、图片标签后面必须要上传一个图片进行占位,并且图片只能是嵌入型,该模板里面的图片最后是会被替换的;

3、明细表数据要显示出来,必须得放在循环标签内;

4、如果标签写法不合法的时候,生成Word时候会出现错误,理论上会提示出错的标签是哪个,但是如果没有则需要用排除法自行确认;

5、标签里面的中文“”‘’&<>符号会自动替换为英文的",如果不想被替换,需要在前面加“\”即可;

6、模板Word文档做好之后,office需要另存为“Word 2003 XML 文档(*.xml)”格式,而WPS则要另存为“XML 文件(*.xml)”格式,并上传到表单的模板中,其他格式无法作为模板文件,请注意格式;

7、暂时不支持换行的多行文本及富文本内容;

2.2 在云表中进行配置

目前云表支持2种配置方式:

1、本地配置管理样式模版(适用于未开通企业云盘的应用空间)

2、【推荐】企业云盘管理样式模版(适用于已开通企业云盘的应用空间)


A、本地配置管理样式模版

1、custom.conf文件配置

配置custom.conf文件,custom.conf文件在安装目录D:\Latosoft\LatoServer\Data\conf中(需要注意的是,如果在D:\Latosoft\LatoServer\Data文件夹中没有conf文件夹,那么需要在Data文件夹中新建一个conf文件夹,然后再新建一个文本文档,命名为custom.conf)

custom.conf文件配置方法:

(要导出为Word文档的表单所在应用空间ID).(云表空间中导出Word的模板名称)=[{"styleName":"(样式名称,可自定义)","url":".(样式文件名称,即生成的xml文件名称).xml"},{"styleName":"(样式名称,可自定义)","url":"(样式文件名称,即生成的xml文件名称).xml"}]

样式名称和样式文件名称各填写一个就行,此例中表示可以有两种样式。

配置完成后需重启服务器。

NDCWD3.png


2、云表空间模板设置

1、在要导出Word文档的模板-填表公式中,新建工具栏按钮,按钮标题设置为“导出Word文档”;

2、添加公式:“打开表单”

NDCWD4.png
  • 表单模板:使用需要导出信息的模板(即本模板);
  • 样式名称:就是我们写的自定义配置文件里面的styleName(样式名称);
  • 表单ID:当填写“本表单.sysFormID”时,表示导出当前表单,也可以用其他方式填写,如填写具体的表单ID数值,或根据数据项的内容。
  • 例:我们在生成的xml文件中设置数据项为:
  • $[标题$]
  • $[作者$]
  • $[内容$]

那么在云表模板中也要定义三个数据项,“标题”、“作者”、“内容” 这样在表单中“标题”数据项填入的数据,在导出WORD文档后,数据就会生成到word中$[标题$] 处,表单中“作者”数据项处填入的数据,在导出后会生成到word中 $[作者$]处,所有数据均是以此对应。

3、真实案例

假设我们要将销售订单,导出为Word文档。

首先,我们需要知道销售订单都有哪些数据项需要导出。

NDCWD5.png

如果,我们要将表中的所有数据项的数据都导出为Word文档。那我们需要先建立一个Word文档,将表单中的数据项以前文讲过的的填写方式列出来。

NDCWD14.png

然后,将此Word文档另存为.xml格式文件,命名为:销售订单。并放置在D:\Latosoft\LatoServer\Data\formStyle目录下。

NDCWD7.png

配置custom.conf文件。我们首先找到D:\Latosoft\LatoServer\Data\conf这个目录(若没有conf文件夹,那么就手动建立一个文件夹,命名为conf)。然后以记事本(或文本文档)的方式打开custom.conf(若没有custom.conf文件,那么就手动建立一个文本文档或记事本,然后命名为custom.conf),配置内容如下:

NDCWD8.png


注:配置好custom.conf文件后,需要重新启动服务器。

重启服务器后,进入云表系统中的销售订单模板。建立填表公式-工具栏按钮-选择打开表单。

表单模板,选择“销售订单”,样式名称为“销售订单”(就是我们配置的custom.conf文件中的styleName(样式名称))。

并选择根据表单ID进行匹配,匹配内容为:本表单.sysFormID(意思为导出当前表单)。

NDCWD9.png


设置好后,保存模板,在总表中打开某张销售订单,点击刚刚建立的按钮,选择要导出到哪个文件夹,并填写导出Word的文档名称。点击确定后,即可成功导出为Word文档。

NDCWD16.png
NDCWD11.png
NDCWD17.png


B、企业云盘管理样式模版

注:此方法需要把样式模版上传到企业云盘,所以先要确认应用空间时候已开通企业云盘。

1、创建样式模版

在业务服务器创建一个样式模板,用来存储要导出Word的样式。

要包含两个字段(样式名和样式文件),其中样式文件字段的数据类型使用文件(将样式文件上传到云盘)。

001创建模版.png

在样式模板中,创建一个“列表选择”接口,并使用样式名参数进行过滤。

002定义样式数据项.png
003定义样式数据项2.png

创建好后,将导出word的样式文件(xml文件)上传到文件字段中,并填写样式名。


004上传样式模版.png

2、在目标表单配置

在要导出Word的模板中,进行导出word配置。

数据接口使用刚刚创建的读取存储样式的数据接口,并根据样式名称参数过滤出想要的样式文件,将样式文件赋值到样式名称中。

表单ID设置为“本表单.sysFormID”,表示将当前表单导出为Word文档。


005设置填表公式.png