导出WORD或WPS格式文档

来自企业管理软件文档中心
2019年3月29日 (五) 14:58Nathan讨论 | 贡献的版本

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

简介

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

使用说明

具体方法为,在word文档中,建立与云表模板中相同的字段,并生成xml文件。此xml文件为导出word文档的模板样式。通过此xml模板,可以导出无数个相同格式的word文档。

制作导出Word样式模板

用word生成XML文件,放置在D:\Latosoft\LatoServer\Data\formStyle目录下。 Word文档填写方法:

普通标签

普通标签分三部分,分别是标签开始,标签字段,标签结束。

标签开始

使用英文的$[作为一个标签的开始;

标签结束

使用英文的$]作为一个标签的结束,一个标签的开始必须带有结束标签,不然该标签不是一个完整的标签,生成word是无法绑定数据源的;

标签字段

标签开始和标签结束之间的就是标签字段,该字段需要与表单定义的字段名称一致; 如:$[姓名$] 他对应了云表模板中“姓名”数据项。

图片标签

标签格式与普通标签一致,也是有标签开始,标签字段,标签结束,不过在标签字段前面有“[图片]”这个标识,如:$[[图片]合影$] 其中,“合影”就是标签字段,“[图片]”只是特殊标识,让系统判断该字段是图片字段;同时,该图片标签后面需要上传一张图片,用于占位及控制大小,注意图片环绕形式只能是嵌入型,如: $[[图片]合影$]

NDCWD1.png

循环标签

循环标签基本定义与图片标签相似,只是循环标签还需要有“循环结束”标签进行配套使用,标签字段用明细表名称,被括起来的普通标签字段需要前面加明细表的名称+英文的句号.,如:$[[循环]明细表1$] $[明细表1.标题$] $[[结束循环]明细表1$]

表格行循环

如果需要将明细表的内容在表格的行进行循环显示,则将两个标签分别放在表格数据行的第一个格子及最后一个格子,如:

NDCWD0.png

段落循环

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

$[[循环]明细表1$]

用户名: $[明细表1.姓名$] 日期: $[明细表1.日期$] $[明细表1.正文内容$]

$[[结束循环]明细表1$]

高级标签

这里提供某些特殊字段的特殊用法,该高级用法遵循freemarker 标签语法,但是需要在高级标签外面加[$和$]作为开始和结束,以下是一些常用的高级用法,其他更多用法可参考https://www.cnblogs.com/hwaggLee/p/4541586.html。

日期类型字段转换显示

当字段属性是日期类型,如果需要指定显示精度,可以在字段后面加“_对象”,再配合标签格式进行定制化显示: 如:$[最后更新时间_对象?string(“yyyy-mm-dd HH:mm:ss zzzz”)$] 效果:2017-12-23 14:12:20 中国标准时间

数字类型字段转换显示

当字段属性是数字类型,如果需要指定显示精度,可以在字段后面加“_对象”,再配合格式化标签进行显示; 数字格式化插值可采用$[#{字段名称;format}$]的形式来格式化数字,其中format可以是:

    mX:小数部分最小X位
    MX:小数部分最大X位

如:$[#{浏览次数;m2}$] 效果:123.00

真假类型字段转换显示

如果字段属性是判断类型,可以分别对真假分别显示不同内容 如:$[是否打印?string(“已打印”,“未打印”)$] 效果:已打印

判断语句

如果需要对模板某部分内容进行判断是否显示,可以用以下if标签进行判断,以下是if标签的两种常用用法: 判断是否有值,加两个英文的?在需要判断的字段后面,如果需要判断是否为空,则在字段前面再加一个!,如: $[[#if !正文内容??]$] 这个是没有正文内容的 $[[/#if]$]

判断字符串相等与否,可以使用==和!=判断符号: $[[#if 是否合影 == “是”]$] 这个是有合影的 $[[/#if]$]

模板内容举例

NDCWD2.png

注意事项: 1.标签开始$[和标签结束$]这两个字符,必须要同一字体,中间不能有空格,而且需要同时录入,如果生成word之后,这两个标签标记没有被数据源替换,请重新键盘录入; 2.图片标签后面必须要上传一个图片,并且图片只能是嵌入型,该模板里面的图片最后是会被替换的; 3.明细表数据要显示出来,必须得放在循环标签内; 4.如果标签写法不合法的时候,生成word时候会出现错误,理论上会提示出错的标签是哪个,但是如果没有则需要用排除法自行确认; 5.标签里面的中文“”‘’&<>符号会自动替换为英文的",如果不想被替换,需要在前面加\即可; 6.模板word文档做好之后,office word需要另存为“Word 2003 XML 文档(*.xml)”格式,WPS另存为“XML 文件(*.xml)”格式,并上传到表单的模板中,其他格式无法作为模板文件,请注意格式; 7.暂时不支持换行的多行文本及富文本内容;

custom.conf文件配置

配置custom.conf文件,custom.conf文件在安装目录D:\Latosoft\LatoServer\Data\conf中(需要注意的是,如果在D:\Latosoft\LatoServer\Data文件夹中没有conf文件夹,那么需要在Data文件夹中新建一个conf文件夹,然后再新建一个文本文档,命名为custom.conf) custom.conf文件配置方法: 10001.(云表空间中导出word的模板名称)=[{"styleName":"(样式名称)","url":".(样式文件名称).xml"},{"styleName":"(样式名称)","url":"(样式文件名称).xml"}] 样式名称和样式文件名称各填写一个就行,样式名称和文件名称为生成的xml文件名称,此例中表示可以有两种样式。 配置完成后需重启服务器

NDCWD3.png

云表空间模板设置

1.在要导出word文档的模板-填表公式中,新建工具栏按钮,按钮标题设置为“导出word文档”; 2.添加公式:打开表单

NDCWD4.png

表单模板:使用需要导出信息的模板(即本模板); 样式名称:就是我们写的自定义配置文件里面的styleName(即word生成的xml文件的文件名); 表单ID:当填写“本表单.sysFormID”时,表示导出当前表单,也可以用其他方式填写,如填写具体的表单ID数值,或根据数据项的内容。 例:我们在生成的xml文件中设置数据项为:$[标题$] $[作者$] $[内容$] 那么在云表模板中也要定义三个数据项,“标题”,“作者”,“内容” 这样在表单中“标题”数据项填入的数据,在导出WORD文档后,数据就会生成到word中$[标题$] 处,表单中“作者”数据项处填入的数据,在导出后会生成到word中 $[作者$]处,所有数据均是以此对应。

实例

例如我们要将销售订单,导出为word文档。 首先我们需要知道销售订单都有哪些数据项需要导出。

NDCWD5.png

例如我们将表中的所有数据项的数据都导出为word文档。 那面我们需要先建立一个word文档,将表单中的数据以特殊的填写方式列出来。

NDCWD6.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文件后,需要重新启动服务器。 重启服务器后,进入云表系统中的销售订单模板。建立填表公式-工具栏按钮-选择打开表单。 表单模板,选择“销售订单”,样式名称为“销售订单”(填写的是生成的xml文件名称)。 并选择根据表单ID进行匹配,匹配内容为:本表单.sysFormID(意思为导出当前表单)。

NDCWD9.png

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

NDCWD10.png
NDCWD11.png
NDCWD12.png