5.7 格式转换 - 主子关系的表拆分成卡片

 

有两张主子关系的表如下所示:

Orders.xlsx:

imagepng

OrderDetails.xlsx:

imagepng

现在需要把它们按照 OrderID 关联起来,并且把每个订单都生成一张主子关系的卡片,并以 OrderID 作为文件名,如下所示:

Orders10248.xlsx:

imagepng

Orders10249.xlsx:

imagepng

Orders10250.xlsx:

imagepng

实现步骤:

1、做一个空的卡片样式模板

Order.xlsx

imagepng

2、实现代码:

A B
1 =T(“Orders/Orders.xlsx”)
2 =T(“Orders/OrderDetails.xlsx”)
3 =A2.align@a(A1:OrderID,OrderID)
4 =file(“Orders/Order.xlsx”).xlsopen()
5 =A2.alter(;OrderID)
6 for A1 >A4.xlscell(“B1”,1;A6.OrderID),A4.xlscell(“E1”,1;A6.OrderDate),A4.xlscell(“B2”,1;A6.CustomerID), A4.xlscell(“E2”,1;A6.EmployeeID),A4.xlscell(“B3”,1;A6.Consignee),A4.xlscell(“B4”,1;A6.ShipAddress)
7 =A4.xlscell(“A7”,1;A3(#A6))
8 =file(“Orders/Order”+A6.OrderID+“.xlsx”).xlswrite(A4)

A1:读入 Orders/Orders.xlsx 的数据
A2:读入 Orders/OrderDetails.xlsx 的数据
A3:把 A2 向 A1 对齐,@a 表示多对一,关联列是 OrderID
A4:打开 Orders/Order.xlsx 空模板文件
A5:把 A2 删除 OrderID 列,因为输出时子表不用显示该列了
A6:按主表 A1 循环
B6:把主表数据写出到 A4 模板的对应位置中
B7:把 A3 中的对应位置的子表数据写出到 A4 模板的以 A7 起始的单元格中
B8:把最终生成的主子卡片式表输出到以订单号命名的文件中


帮你早下班 - esProc 桌面版与 Excel 数据处理
5.6 纵向拆分 - 多卡片拆成一张卡片一个文件
5.8 横向拆分 - 按列 - 列名做文件名