跳到主要内容

Word/Excel打印模板中选项、图片和关联记录设计细则


在如何制作Word/Excel打印模板中,我们学会一般的打印方法,本文再进一步介绍打印时的解析规则细节。

1、单选、多选字段打印未选中选项

平铺类型的单选和多选字段如需打印未选中的选项,可在字段代码的{}内结尾处填写“_Alloptions”,例如:#{单选_Alloptions}。默认是横向平铺打印,如果需要竖向打印,结尾处继续添加[V]标记,如#{单选_Alloptions[V]}

例如一个保密级别字段,有秘密、机密、绝密三个选项,记录中选择了“机密”,打印时如果需要打印另外两个选项,则字段代码为#{保密级别_Alloptions}, 如果还需要竖向平铺打印,字段代码为#{保密级别_Alloptions[V]}

2、图片的打印规则

2.1图片的宽度和高度设置

本记录中的图片支持打印,图片支持设定宽度和高度。

如上图中的附件字段代码 #{附件$[90*auto]$} 中,[90*auto]表示的是[宽度*高度]

图片的4种配置方式:

  • 宽度固定、高度自适应#{附件$[90*auto]$}
    表示图片的宽度固定90,高度自适应。90是默认数字,可以自定义。

  • 宽度自适应、高度固定#{附件$[auto*80]$} 表示图片的宽度自适应,高度固定80,数字可以自定义。

  • 宽度固定、高度固定#{附件$[70*90]$}
    表示图片的宽度固定为70,高度固定为90, 数字可以自定义。

  • 固定范围内宽和高自适应#{附件$[45*90_auto]$}
    表示图片在45*90的范围内自适应显示,数字可以自定义。

高度和宽度不支持同时适应,例如 #{附件$[auto*auto]$}

2.2图片的质量设置

为了满足不同场景对图片清晰度的要求,现支持Word模板图片解析为低、中、高三种图片质量。

  • 低(L)——对应图片分辨率75,按照X3的倍数取图片的宽和高;生成速度快,用于一般打印。

  • 中(M)——对应图片分辨率150,按照X6的倍数取图片的宽和高;生成速度适中,打印较清晰。

  • 高(H)——对应图片分辨率300,按照X12的倍数取图片的宽和高;生成速度慢,用于高质量彩色打印。

字段代码示例:

#{附件$[auto*90_M]$}#{附件$[auto*90_H]$}#{附件$[45*90_auto_H]$}

  • 1、不添加图片质量标签,表示默认按照质量的方式解析图片。

  • 2、为了保证解析的图片不会比原图大,故需要将转换后的图片尺寸与原图做对比,若转换后的图片比原图大,则返回原图。

3、字段的二维码条形码打印

可通过代码获取任意字段的二维码或条形码,字段代码如下:

  • 二维码:#{[qrcode]字段名$[20*20]$}
  • 条形码:#{[barcode]字段名$[40*10]$}

代码中,字段名可以使用字段ID,图片大小的数字可以调整,其他内容和符合不能修改。

二维码编码方式:QR-code,最大包含150个字(支持汉字);条形码编码方式:code128,最大包含30个字符(仅支持数字、字母、符号)。

代码示例和效果:

几个系统字段的字段ID

  • 公开分享链接: sharelink
  • 内部访问链接:privatelink
  • 记录ID:recordid

4、子表和关联表(多条)的几种打印方式

方式1、显示方式为列表时

默认以表格方式按照记录顺序逐行向下列出所有记录的字段值(包括空值)

示例1: 有张固定格式的采购单上面的采购明细是一个采购清单需要一条条列出来

模板设计范例:

打印效果范例:

明细表中的序号

  • Word模板

    明细表中,需要使用到Word的功能,Word里可以设置序号的样式。

  • Excel模板

    需要利用Excel自身的功能,公式:ROW() 获取当前单元格所在的行,然后减去前面的行即可。如下图,明细表中第一行所在的行是8,通过公式获取就是 =ROW()-7,在打印时,后面的明细行也会按这个公式显示序号。

    效果:

合并相同单元格

当同列的上下单元格内容相同时,可以合并单元格。

合并上下单元格的字段代码写法:

#{子表名.字段名[M]}

只需在原字段代码的字段名和大括号之间写个[M]即可。

如下图:

效果:

以下情况不会合并单元格

单价列设置了可合并,上下单元格都是2000,并没有全部合并。这是因为前一列(SKU)也是设置了和并列,如果前一列(sku列)值不同没有合并,当前列(单价列)也不合并。

方式2、逐条打印

如果需要将关联记录(列表)或子表中每一条记录作为一个整体依次逐条打印,既每一行记录打印时都能显示字段标题,则可在表格上一行和下一行插入以下代码:

#Relation.Repeat[start]#

#Relation.Repeat[end]#

代码之间的所有内容每条记录都会复制一份,并填充对应数据,所以可以是多行多列排版格式

代码不能和其他内容放在一个单元格中,需单独一行。

例如:采购单中,将每一条采购明细单独打印。

打印范例:

格式1比较常见的场景是工资条打印。

模板范例:

TIPS:

如果每条记录之间需要空一行,模板中也空一行并设置为无边框。

方式3、拼接打印

此方式会将同一个字段的所有值拼接在一起,用逗号隔开。

模板范例:

只需要在字段代码的最后一个大括号前加上 [S]即可识别。 英文的[],大写的S。

方式4、填充打印

例如,子表中有10行记录,如果您只打印明细表中的指定行的记录,则可以通过此方法打印。

如下图示范代码,只需在表名后面添加序号即可,下面代码表示只打印前两行记录内容。

模板范例:

效果:

子表或关联表为空时不打印

如需不打印没有数据的关联表/子表,请将代码两个代码标签:#NoDataNotPrint[start]##NoDataNotPrint[end]# 插入到模板中,代码之间的关联记录/子表没有数据则不会打印,如下图配置:

当关联表有数据时:

当关联表无数据时:

提示

如果无数据的开始标签和结束标签之间有多个子表/关联表,只要有一个子表/关联表有数据,无数据的子表/关联表也会打印。因此建议一个子表/关联表单独配置一组标签。并且,不同子表/明细表不能放在一个大表格中,都要独立配置一个表格。

5.打印时间和打印人

除了打印记录中的字段数据,有时显示打印时间、打印人、记录的二维码、条形码、创建时间、修改时间等信息。只需将其对应的字段代码/字段别名粘贴到模板中的相应位置,即可自动填充数据。

6.批量打印

批量打印的常见问题,点此查看


文档问题反馈

文档中是否有错别字、内容过期、难以理解等问题? 点此给我们反馈吧