5.7 格式转换 - 主子关系的表拆分成卡片
有两张主子关系的表如下所示:
Orders.xlsx:
OrderDetails.xlsx:
现在需要把它们按照 OrderID 关联起来,并且把每个订单都生成一张主子关系的卡片,并以 OrderID 作为文件名,如下所示:
Orders10248.xlsx:
Orders10249.xlsx:
Orders10250.xlsx:
实现步骤:
1、做一个空的卡片样式模板
Order.xlsx
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 横向拆分 - 按列 - 列名做文件名