“导出WORD或WPS格式文档”版本间的差异

来自企业管理软件文档中心
跳转至: 导航搜索
(Even移动页面导出word使用方法导出WORD或WPS格式文档:更新文档标题)
第1行: 第1行:
=简介=
+
=一、简介=
* 在使用云表的过程中,我们都知道可以将表单或总表导出为Excel表格,但有时我们还需要将表单导出为word文档(如系统中的公告、合同表单或参考资料等),根据使用者的需求,云表开发了将表单导出为word文档的功能。
+
=使用说明=
+
* 具体方法为,在word文档中,建立与云表模板中相同的数据项,并生成xml文件。此xml文件为导出word文档的模板样式。通过此xml模板,可以导出无数个相同格式的word文档。
+
==制作导出Word样式模板==
+
* 用word生成XML文件,放置在D:\Latosoft\LatoServer\Data\formStyle目录下。
+
* Word文档填写方法:
+
===普通标签===
+
* 普通标签分三部分,分别是标签开始,标签字段,标签结束。
+
* 1.标签开始
+
* 使用英文的'''$['''作为一个标签的开始;
+
* 2.标签结束
+
* 使用英文的'''$]'''作为一个标签的结束,一个标签的开始必须带有结束标签,不然该标签不是一个完整的标签,生成word是无法绑定数据源的;
+
* 3.标签字段
+
* 标签开始和标签结束之间的就是标签数据项,该数据项需要与表单定义的数据项名称一致;
+
* 如:'''$[姓名$]'''  他对应了云表模板中“姓名”数据项。
+
  
===图片标签===
+
在使用云表的过程中,我们都知道可以将表单或总表导出为Excel表格,但有时我们还需要将表单导出为word文档(如系统中的公告、合同表单或参考资料等),根据使用者的需求,云表开发了将表单导出为word文档的功能。
* 标签格式与普通标签一致,也是有标签开始,标签数据项,标签结束,不过在标签数据项前面有“[图片]”这个标识,如:'''$[[图片]合影$]'''
+
其中,“合影”就是标签数据项,“[图片]”只是特殊标识,让系统判断该数据项是图片数据类型;同时,该图片标签后面需要上传一张图片,用于占位及控制大小,注意图片环绕形式只能是嵌入型,如:
+
* '''$[[图片]合影$]'''
+
  
[[文件:NDCWD1.png|720px|无框|左]]
+
 
*   
+
=二、使用说明=
 +
 
 +
具体方法分为2步:
 +
 
 +
'''''1、制作Word文档的样式模版'''''
 +
 
 +
'''''2、在云表中进行配置'''''
 +
 
 +
==2.1 制作导出Word样式模板==
 +
 
 +
<big>'''什么是样式模版?'''</big>
 +
 
 +
样式模版是用于记录Word文档中数据样式的,和云表的模版作用一样,Word样式模版除了样式以外,同样有数据项。
 +
 
 +
在Word文档中,创建与云表模板相同的数据项,按照样式模版的编写规则生成xml文件。
 +
 
 +
此xml文件就是导出Word文档的样式模板,通过它,我们就可以导出无数个相同格式的文档。
 +
 
 +
<big>'''什么是标签?'''</big>
 +
 
 +
程序通过识别“标签”找到数据要填入的位置,可以理解为Word样式模版的标签就是云表模版中的数据项。
 +
 
 +
标签共有N种,我们需要了解每种标签的编写规则。
 +
 
 +
 
 +
===<1>普通标签===
 +
 
 +
*<font color="red">'''$[姓名$]'''</font>  就是一个普通标签,对应“姓名”数据项。
 +
*普通标签分三个部分,分别是“标签头”、“标签尾”和“标签内容”,用于管理“文本”数据项。
 +
 
 +
'''1、标签头'''
 +
*标签头是程序识别标签开始的标志,用英文格式的<font color="red"><big>''' $[ '''</big></font>表示。
 +
 
 +
'''2、标签尾'''
 +
*标签尾是程序识别标签结束的标志,用英文格式的<font color="red"><big>''' $] '''</big></font>表示。
 +
*'''注意:'''标签头和标签尾就如同“左括号”和“右括号”,必须成对出现才是一个完整的标签。只有完整的标签才能被程序识别;
 +
 
 +
'''3、标签内容'''
 +
*“标签头”和“标签尾”组合在一起,就成了一个“数据项”,至于这是什么数据项,就要看“标签内容”了。
 +
*标签内容是填写在普通标签中,用于匹配云表模版中的数据项,所以标签内容要与模版定义的数据项'''名称'''一致;
 +
*如:<font color="red">'''$[姓名$]'''</font> 就对应云表模板中“姓名”数据项。
 +
 
 +
 
 +
===<2>图片标签===
 +
*和普通标签类型类似,除了'''标签头'''、'''标签尾'''和'''标签内容'''以外,还有'''“占位图”'''组成。
 +
*'''图片标签的标签头''':为了让程序识别这个标签对应的是图片数据项,在标签头后面需要加上“[图片]”作为标识。
 +
*'''图片标签的占位图''':为了控制图片在导出文档中的位置和大小,需要在图片标签后面上传一张图片,注意图片环绕形式只能是嵌入型,这样图片可以是任意内容,因为在导出时,会被替换成表单中图片数据项的内容。
 +
 
 +
<big>如:<font color="red">'''$[[图片]合影$]'''</font></big>
 +
*“[图片]”是特殊标识,让系统判断该数据项是图片数据类型;“合影”就是数据项的名称。
 +
 
 +
-----------------------------
 +
'''$[[图片]合影$]'''
 +
[[文件:NDCWD1.png|720px|无框|左]] 
 
*   
 
*   
 
*   
 
*   
第29行: 第64行:
 
*   
 
*   
 
*   
 
*   
 +
-----------------------------
 +
 +
 +
===<3>循环标签===
 +
 +
<font color="red">'''$[[循环]明细表1$]  $[明细表1.标题$]  $[[结束循环]明细表1$]'''</font>循环标签是一种特殊的标签类型,用于明细表的数据项管理,可细分为“明细表行循环”和“段落循环”。
 +
 +
和图片标签类似,需要在普通标签的基础上给程序做特殊的“标识”。
 +
 +
1、循环标签的标签头和标签尾:
 +
 +
*在普通标签头后增加[循环],并在标识后填写明细表的名称,即<font color="red">''' $[[循环]明细表1$]'''</font>;
 +
*在普通标签尾后增加[结束循环],并在标识后填写明细表的名称,即<font color="red">''' $[[结束循环]明细表1$] '''</font>;
 +
*标签头和标签尾仍然要配套使用。
 +
 +
2、循环标签的明细表数据项标签:
 +
 +
格式如下:<font color="red">''' $[明细表1.标题$] '''</font>,“$[  $]”之间的内容是明细表的数据项,写法为“明细表名称.数据项名称”;这个格式跟普通标签非常相似,只能在循环标签的标签头和标签尾之间使用。
 +
 +
 +
====<3.1>Word表格行循环====
 +
 +
如果需要将明细表的内容在Word文档中,以<font color="blue">'''表格形式'''</font>进行循环显示,需要将两个标签分别放在表格数据行的第一个格子及最后一个格子,中间的单元格则填入明细表数据项标签,如下图:
  
===循环标签===
 
* 循环标签基本定义与图片标签相似,只是循环标签还需要有“循环结束”标签进行配套使用,标签数据项用明细表名称,被括起来的普通标签数据项需要前面加明细表的名称+英文的句号(点.),如:'''$[[循环]明细表1$]  $[明细表1.标题$]  $[[结束循环]明细表1$]'''
 
====表格行循环====
 
* 如果需要将明细表的内容在表格的行进行循环显示,则将两个标签分别放在表格数据行的第一个格子及最后一个格子,如:
 
 
[[文件:NDCWD0.png|720px|无框|居中]]
 
[[文件:NDCWD0.png|720px|无框|居中]]
  
====段落循环====
 
* 如果想实现某段落或者页的循环,则将两个标签分别放在需要循环的段落的前和后两个位置,如:
 
  
 +
====<3.2>段落循环====
 +
 +
如果想实现以<font color="blue">'''段落'''</font>或者<font color="blue">'''页'''</font>的循环,则将两个标签分别放在需要循环的段落的前和后两个位置,如:
 +
-----------------------------
 
* $[[循环]明细表1$]
 
* $[[循环]明细表1$]
  
第46行: 第102行:
  
 
* $[[结束循环]明细表1$]
 
* $[[结束循环]明细表1$]
 +
-----------------------------
  
===高级标签===
+
 
* 这里提供某些特殊数据类型的特殊用法,该高级用法遵循freemarker 标签语法,但是需要在高级标签外面加[$和$]作为开始和结束,以下是一些常用的高级用法,其他更多用法可参考https://www.cnblogs.com/hwaggLee/p/4541586.html。
+
===<4>高级标签===
====日期类型字段转换显示====
+
 
* 当数据项的数据类型是日期类型,如果需要指定显示精度,可以在数据项后面加“_对象”,再配合标签格式进行定制化显示:
+
高级标签是指某些特殊数据类型的特殊用法,遵循freemarker的标签语法,但是需要在高级标签外面加<font color="red">'''"$["'''</font><font color="red">'''“$]”'''</font>作为标签的开始和结束,以下是一些常用的高级用法,其他更多用法可参考https://www.cnblogs.com/hwaggLee/p/4541586.html。
* 如:$[最后更新时间_对象?string(“yyyy-mm-dd HH:mm:ss zzzz”)$]
+
 
* 效果:2017-12-23 14:12:20 中国标准时间
+
====<4.1>日期类型数据项转换显示====
====数字类型数据项转换显示====
+
 
* 当数据项的属性是数字类型,如果需要指定显示精度,可以在数据项后面加“_对象”,再配合格式化标签进行显示;
+
当数据项的数据类型是日期类型,如果需要指定显示精度,可以在数据项后面加“_对象”,再配合标签格式进行定制化显示:
* 数字格式化插值可采用$[#{字段名称;format}$]的形式来格式化数字,其中format可以是:
+
 
*      mX:小数部分最小X位
+
写法:<font color="red">'''$['''</font><font color="blue">最后更新时间_对象?string(“yyyy-mm-dd HH:mm:ss zzzz”)</font><font color="red">'''$]'''</font>
*     MX:小数部分最大X位
+
 
* 如:$[#{浏览次数;m2}$]
+
效果:2017-12-23 14:12:20 中国标准时间
* 效果:123.00
+
 
====真假类型数据项转换显示====
+
====<4.2>数字类型数据项转换显示====
* 如果数据项属性是判断类型,可以分别对真假分别显示不同内容
+
 
* 如:$[是否打印?string(“已打印”,“未打印”)$]
+
当数据项的属性是数字类型,如需要指定显示精度,可以在数据项后面加“_对象”,再配合格式化标签进行显示;
* 效果:已打印
+
 
====判断语句====
+
数字格式化可采用$[#{字段名称;format}$]的形式来格式化数字,其中format可以是:
* 如果需要对模板某部分内容进行判断是否显示,可以用以下if标签进行判断,以下是if标签的两种常用用法:
+
 
* 判断是否有值,加两个英文的?在需要判断的数据项后面,如果需要判断是否为空,则在数据项前面再加一个!,如:
+
mX:小数部分最小X位
* $[[#if !正文内容??]$]
+
*MX:小数部分最大X位
 +
 
 +
写法:<font color="red">'''$['''</font><font color="blue">#{浏览次数;m2}</font><font color="red">'''$]'''</font>
 +
 
 +
效果:123.00
 +
 
 +
====<4.3>真假类型数据项转换显示====
 +
 
 +
如果数据项属性是判断类型(也叫是否型、布尔型),可以对值的结果“真”/“假”,分别显示不同内容。
 +
 
 +
写法:<font color="red">'''$['''</font><font color="blue">是否打印?string(“已打印”,“未打印”)</font><font color="red">'''$]'''</font>
 +
 
 +
效果:已打印
 +
 
 +
====<4.4>判断语句====
 +
 
 +
如果需要对模板某部分内容进行判断是否显示,可以用以下if标签进行判断,以下是if标签的两种常用用法:
 +
 
 +
----
 +
1、判断是否有值,加两个英文的?在需要判断的数据项后面,如果需要判断是否为空,则在数据项前面再加一个!,如:
 +
* <font color="red">'''$['''</font><font color="blue">[#if !正文内容??]$]</font><font color="red">'''$]'''</font>
 
* 这个是没有正文内容的
 
* 这个是没有正文内容的
* $[[/#if]$]
+
* <font color="red">'''$['''</font><font color="blue">[/#if]$]</font><font color="red">'''$]'''</font>
 +
----
  
* 判断字符串相等与否,可以使用==!=判断符号:
+
----
* $[[#if 是否合影 == “是”]$]
+
2、判断字符串相等与否,可以使用判断符号相等“==”或者不相等“!=”:
 +
* <font color="red">'''$['''</font><font color="blue">[#if 是否合影 ==“是”]$]</font><font color="red">'''$]'''</font>
 
* 这个是有合影的
 
* 这个是有合影的
* $[[/#if]$]
+
* <font color="red">'''$['''</font><font color="blue">[/#if]$]</font><font color="red">'''$]'''</font>
 +
----
  
* <big>'''模板内容举例'''</big>
+
<big>'''模板内容举例'''</big>
  
 
[[文件:NDCWD2.png|720px|无框|居中]]
 
[[文件:NDCWD2.png|720px|无框|居中]]
  
* <big>'''注意事项:'''</big>
 
* 1.标签开始$[和标签结束$]这两个字符,必须要同一字体,中间不能有空格,而且需要同时录入,如果生成word之后,这两个标签标记没有被数据源替换,请重新键盘录入;
 
* 2.图片标签后面必须要上传一个图片,并且图片只能是嵌入型,该模板里面的图片最后是会被替换的;
 
* 3.明细表数据要显示出来,必须得放在循环标签内;
 
* 4.如果标签写法不合法的时候,生成word时候会出现错误,理论上会提示出错的标签是哪个,但是如果没有则需要用排除法自行确认;
 
* 5.标签里面的中文“”‘’&<>符号会自动替换为英文的",如果不想被替换,需要在前面加\即可;
 
* 6.模板word文档做好之后,office word需要另存为“Word 2003 XML 文档(*.xml)”格式,WPS另存为“XML 文件(*.xml)”格式,并上传到表单的模板中,其他格式无法作为模板文件,请注意格式;
 
* 7.暂时不支持换行的多行文本及富文本内容;
 
  
==custom.conf文件配置==
+
<big><font color="red">'''注意事项:'''</font></big>
* 配置custom.conf文件,custom.conf文件在安装目录D:\Latosoft\LatoServer\Data\conf中(需要注意的是,如果在D:\Latosoft\LatoServer\Data文件夹中没有conf文件夹,那么需要在Data文件夹中新建一个conf文件夹,然后再新建一个文本文档,命名为custom.conf)
+
1、标签开始$[和标签结束$]这两个字符,必须要<font color="red">'''同一字体'''</font>,中间<font color="red">'''不能有空格'''</font>,而且需要<font color="red">'''同时录入'''</font>,如果生成word之后,如果这两个标签标记没有被数据源替换,请重新键盘录入(这是因为Word会把这两个字符分开不同段落);
* custom.conf文件配置方法:
+
 
* (要导出为word文档的表单所在应用空间ID).(云表空间中导出word的模板名称)=[{"styleName":"(样式名称,可自定义)","url":".(样式文件名称,即生成的xml文件名称).xml"},{"styleName":"(样式名称,可自定义)","url":"(样式文件名称,即生成的xml文件名称).xml"}]   
+
2、图片标签后面必须要上传一个图片进行占位,并且图片只能是嵌入型,该模板里面的图片最后是会被替换的;
* 样式名称和样式文件名称各填写一个就行,此例中表示可以有两种样式。
+
 
配置完成后需重启服务器
+
3、明细表数据要显示出来,必须得放在循环标签内;
 +
 
 +
4、如果标签写法不合法的时候,生成Word时候会出现错误,理论上会提示出错的标签是哪个,但是如果没有则需要用排除法自行确认;
 +
 
 +
5、标签里面的中文“”‘’&<>符号会自动替换为英文的",如果不想被替换,需要在前面加<font color="red">'''“\”'''</font>即可;
 +
 
 +
6、模板Word文档做好之后,office需要另存为“Word 2003 XML 文档(*.xml)”格式,而WPS则要另存为“XML 文件(*.xml)”格式,并上传到表单的模板中,其他格式无法作为模板文件,请注意格式;
 +
 
 +
7、暂时不支持换行的多行文本及富文本内容;
 +
 
 +
 
 +
==2.2 在云表中进行配置==
 +
 
 +
<big>目前云表支持2种配置方式:</big>
 +
 
 +
<big>1、本地配置管理样式模版(适用于未开通企业云盘的应用空间)</big>
 +
 
 +
<big>2、<font color="red">'''【推荐】'''</font>企业云盘管理样式模版(适用于已开通企业云盘的应用空间)</big>
 +
 
 +
 
 +
===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"}]   
 +
 
 +
样式名称和样式文件名称各填写一个就行,此例中表示可以有两种样式。
 +
 
 +
<font color="red">配置完成后需重启服务器。</font>
  
 
[[文件:NDCWD3.png|720px|无框|居中]]
 
[[文件:NDCWD3.png|720px|无框|居中]]
  
==云表空间模板设置==
+
 
* 1.在要导出word文档的模板-填表公式中,新建工具栏按钮,按钮标题设置为“导出word文档”;
+
====2、云表空间模板设置====
* 2.添加公式:打开表单
+
 
 +
1、在要导出Word文档的模板-填表公式中,新建工具栏按钮,按钮标题设置为“导出Word文档”;
 +
 
 +
2、添加公式:“打开表单”
  
 
[[文件:NDCWD4.png|720px|无框|居中]]
 
[[文件:NDCWD4.png|720px|无框|居中]]
第111行: 第217行:
 
* $[作者$]
 
* $[作者$]
 
* $[内容$]  
 
* $[内容$]  
* 那么在云表模板中也要定义三个数据项,“标题”,“作者”,“内容” 这样在表单中“标题”数据项填入的数据,在导出WORD文档后,数据就会生成到word中$[标题$] 处,表单中“作者”数据项处填入的数据,在导出后会生成到word中 $[作者$]处,所有数据均是以此对应。
 
  
=实例=
+
那么在云表模板中也要定义三个数据项,“标题”、“作者”、“内容” 这样在表单中“标题”数据项填入的数据,在导出WORD文档后,数据就会生成到word中$[标题$] 处,表单中“作者”数据项处填入的数据,在导出后会生成到word中 $[作者$]处,所有数据均是以此对应。
* 例如我们要将销售订单,导出为word文档。
+
 
* 首先我们需要知道销售订单都有哪些数据项需要导出。
+
====3、真实案例====
 +
假设我们要将销售订单,导出为Word文档。
 +
 
 +
首先,我们需要知道销售订单都有哪些数据项需要导出。
  
 
[[文件:NDCWD5.png|720px|无框|居中]]
 
[[文件:NDCWD5.png|720px|无框|居中]]
  
* 例如我们将表中的所有数据项的数据都导出为word文档。
+
----
* 那面我们需要先建立一个word文档,将表单中的数据项以前文讲过的的填写方式列出来。
+
如果,我们要将表中的所有数据项的数据都导出为Word文档。那我们需要先建立一个Word文档,将表单中的数据项以前文讲过的的填写方式列出来。
  
 
[[文件:NDCWD14.png|720px|无框|居中]]
 
[[文件:NDCWD14.png|720px|无框|居中]]
  
* 然后,将此word文档另存为.xml格式文件,命名为:销售订单。并放置在D:\Latosoft\LatoServer\Data\formStyle目录下。
+
----
 +
然后,将此Word文档另存为.xml格式文件,命名为:销售订单。并放置在D:\Latosoft\LatoServer\Data\formStyle目录下。
  
 
[[文件:NDCWD7.png|720px|无框|居中]]
 
[[文件:NDCWD7.png|720px|无框|居中]]
  
* 配置custom.conf文件。我们首先找到D:\Latosoft\LatoServer\Data\conf这个目录(若没有conf文件夹,那么就手动建立一个文件夹,命名为conf)。然后以记事本(或文本文档)的方式打开custom.conf(若没有custom.conf文件,那么就手动建立一个文本文档或记事本,然后命名为custom.conf)。配置内容如下。
+
----
 +
配置custom.conf文件。我们首先找到D:\Latosoft\LatoServer\Data\conf这个目录(若没有conf文件夹,那么就手动建立一个文件夹,命名为conf)。然后以记事本(或文本文档)的方式打开custom.conf(若没有custom.conf文件,那么就手动建立一个文本文档或记事本,然后命名为custom.conf),配置内容如下:
  
 
[[文件:NDCWD8.png|720px|无框|居中]]
 
[[文件:NDCWD8.png|720px|无框|居中]]
  
  
* '''注:'''配置好custom.conf文件后,需要重新启动服务器。
+
'''注:'''配置好custom.conf文件后,需要重新启动服务器。
* 重启服务器后,进入云表系统中的销售订单模板。建立填表公式-工具栏按钮-选择打开表单。
+
 
* 表单模板,选择“销售订单”,样式名称为“销售订单”(就是我们配置的custom.conf文件中的styleName(样式名称))。
+
重启服务器后,进入云表系统中的销售订单模板。建立填表公式-工具栏按钮-选择打开表单。
* 并选择根据表单ID进行匹配,匹配内容为:本表单.sysFormID(意思为导出当前表单)。
+
 
 +
表单模板,选择“销售订单”,样式名称为“销售订单”(就是我们配置的custom.conf文件中的styleName(样式名称))。
 +
 
 +
并选择根据表单ID进行匹配,匹配内容为:本表单.sysFormID(意思为导出当前表单)。
  
 
[[文件:NDCWD9.png|720px|无框|居中]]
 
[[文件:NDCWD9.png|720px|无框|居中]]
  
* 设置好后,保存模板,在总表中打开某张销售订单,点击刚刚建立的按钮,选择要导出到哪个文件夹,并填写导出word的文档名称。点击确定后,即可成功导出为word文档。
+
 
 +
设置好后,保存模板,在总表中打开某张销售订单,点击刚刚建立的按钮,选择要导出到哪个文件夹,并填写导出Word的文档名称。点击确定后,即可成功导出为Word文档。
  
 
[[文件:NDCWD16.png|720px|无框|居中]]
 
[[文件:NDCWD16.png|720px|无框|居中]]
第147行: 第261行:
  
 
[[文件:NDCWD17.png|720px|无框|居中]]
 
[[文件:NDCWD17.png|720px|无框|居中]]
 +
 +
 +
===B、企业云盘管理样式模版===
 +
 +
<big>注:此方法需要把样式模版上传到企业云盘,所以先要确认应用空间时候已开通企业云盘。</big>
 +
 +
====1、创建样式模版====
 +
 +
在业务服务器创建一个样式模板,用来存储要导出Word的样式。
 +
 +
要包含两个字段(样式名和样式文件),其中样式文件字段的数据类型使用文件(将样式文件上传到云盘)。
 +
 +
[[文件:001创建模版.png|720px|无框|居中]]
 +
 +
在样式模板中,创建一个“列表选择”接口,并使用样式名参数进行过滤。
 +
 +
[[文件:002定义样式数据项.png|720px|无框|居中]]
 +
 +
[[文件:003定义样式数据项2.png|720px|无框|居中]]
 +
 +
创建好后,将导出word的样式文件(xml文件)上传到文件字段中,并填写样式名。
 +
 +
 +
[[文件:004上传样式模版.png|720px|无框|居中]]
 +
 +
====2、在目标表单配置====
 +
 +
在要导出Word的模板中,进行导出word配置。
 +
 +
数据接口使用刚刚创建的读取存储样式的数据接口,并根据样式名称参数过滤出想要的样式文件,将样式文件赋值到样式名称中。
 +
 +
表单ID设置为“本表单.sysFormID”,表示将当前表单导出为Word文档。
 +
 +
 +
[[文件:005设置填表公式.png|720px|无框|居中]]

2021年3月6日 (六) 18:19的版本

一、简介

在使用云表的过程中,我们都知道可以将表单或总表导出为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