[]
报表支持两种多列打印布局:"Z字型"(横向从左到右顺序换行)和"N字型"(纵向从上到下顺序换列),满足不同场景的数据展示需求。
接下来使用示例为您介绍这两种多列打印的具体实现方法。
实现"Z字型多列打印"采用矩表实现,其主要问题在于行分组和列分组的设置。
在报表设计器中,使用矩表组件,在矩表数值区拖拽一个容器组件(防止最后打印的时候二维码溢出),然后在同一个单元格中拖拽添加一个“条形码”组件(有关条形码的更多介绍,请见条形码),如下图示。

从左侧工具箱,打开元素管理,选中条形码,在右侧属性面板绑定数据。

选中行分组在分组内下方插入一行用来展示二维码的数值。

选中新增的文本框,绑定数据字段(如订单编号)。

本方案通过对“订单编号”数值部分进行数学运算实现行列分组:
列分组: 订单编号数值除以列数(示例为10列)取余数,余数相同者归为同列
示例: 订单编号122 → 122%10=2 → 归入第2列
行分组: 订单编号数值除以列数取整数商,商值相同者归为同行
示例: 订单编号122 → 122÷10=12 → 归入第12行
按照下图,选中列分组,在右侧设置列分组条件为表达式分组:

列分组的表达式为:{ToInt16(订单编号.Substring(1)) Mod 10}

说明:
(1)这里的被除数为10,代表分为10列打印。
(2)因为订单编号字段本身类型为字符串,所以需要进行数据截取和数据类型转换。(关于表达式的用法请参考:表达式专题 )
同样对于行分组设置分组条件:

行分组的分钟表达式为:{Floor(ToInt16(订单编号.Substring(1)) / 10)}

说明: 以上表达式是对订单编号截取数字数值之后,进行类型转换,之后再除以10取了整数部分。
为了保证打印的顺序正确,我们需要设置列分组排序规则,与列分组的表达式相同。

为了方便验证结果,在列分组和行分组的数值区域绑定了刚刚设置的行、列分组的表达式:

如果不想显示其他单元格,可以将对应的单元格背景色设为透明色即可,以下是实际效果图:

N字型多列打印方式采用分栏报表实现,相对比较简单。
在报表设计器拖拽一个列表组件,在其中放入一个容器,容器内可放置和绑定您想要打印的信息:

从左侧工具栏打开元素管理,选中列表元素,在右侧属性面板对其进行分组条件的设置:

对报表设置分栏数量:

预览效果如下:
