第四章——Each命令

1    介绍

Each命令用于迭代集合,克隆命令XlsArea。类似于Java语言的for操作符。

2    命令属性

Each命令有以下属性:

  • var:迭代时,将集合中的每个条目放入Context中的那个键上。
  • items:要迭代的集合在Context中的键值。
  • area:Each命令体的XlsArea。
  • direction:Direction枚举,有效值是DOWN和RIGHT,表示如何(通过行或列)重复命令体。默认为DOWN。
  • select:迭代过程中过滤集合条目的选择表达式。
  • groupBy:分组属性。
  • groupOrder:分组排序方式(‘desc’或‘asc’)。
  • cellRefGenerator:是否创建目标单元格引用的自定义策略。
  • multisheet:Context中sheet名称列表的键。
  • lastCell:命令指向的最后一个单元格。

var和items是必须的。

3    构建命令

3.1    使用Java API构建

// 创建Transformer和departments集合
// ...
// 创建department XlsArea
XlsArea departmentArea = new XlsArea("Template!A2:G13", transformer);
// 创建Each命令迭代departments集合,链接到departmentArea
EachCommand departmentEachCommand = new EachCommand("department", "departments", departmentArea);

3.2    使用Excel标记构建

为了使用Excel标记创建Each命令,在命令体区域开始单元格的注释中使用特殊语法:

jx:each(items="employees" var="employee" lastCell="D4")

因此,我们使用jx:each和括号中空格隔开的命令属性。lastCell属性定义命令的XlsArea体的最后一个单元格。

3.3    使用XML配置构建

为了使用XML配置创建Each命令,使用以下标记:

<each items="employees" var="employee" ref="Template!A4:D4">
    <area ref="Template!A4:D4"/>
</each>

ref属性定义Each命令相关的区域。内部区域定义Each命令体。通常是相同的。

4    复制方向

默认,Each命令direction属性设置为DOWN表示命令体基于Excel行向下克隆。

如果你需要通过列克隆区域,应该设置属性值为RIGHT。

Java API通过以下方式设置:

//... 创建EachCommand迭代departments
// 设置direction为RIGHT
departmentEachCommand.setDirection(EachCommand.Direction.RIGHT);

5    分组数据

Each命令支持通过groupBy属性分组。groupOrder属性设置排序方式,有效值为desc或asc。

jx:each(items="employees" var="myGroup" groupBy="name" groupOrder="asc" lastCell="D6")

在例子中,每个组可以使用myGroup引用。

当前组条目可以使用myGroup.item引用。因此,可以使用以下方式引用员工姓名:

${myGroup.item.name}

通过items属性访问分组中的所有条目:

jx:each(items="myGroup.items" var="employee" lastCell="D6")

你也可以跳过var属性,默认组变量名称为_group。

转载于:https://my.oschina.net/leeck/blog/1845852

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值