SPL 桌面实践:如何快速将一个 Excel 拆成多个
相信很多小伙伴都遇到过需要将一个大的 Excel 表格拆分成多个小表的情况,显然复制粘贴不可取,VBA 又太复杂。这里给大家介绍一个更简单好用的方法,使用esProcSPL,分分钟帮你解决问题。
直接看例题。
1. 按行数拆分
有订单表文件 Orders.xls 部分数据如下图所示,第 1 行是列标题,第 2 行开始是数据,每行一条数据。
现在需要把这个 Excel 文件按照指定的行数拆分,每 300 行拆分为一个小文件。
将下面几句代码复制到 esProc SPL 即可:
A |
B |
|
1 |
=T@c("Orders.xlsx") |
|
2 |
for A1,300 |
=T("Orders"/#A2/".xlsx",A2) |
A1 读取 Orders.xlsx 文件,@c选项表示将文件数据读入成游标,读成游标后可以分批次读取操作
A2 循环 A1 中数据,每次取 300 条数据
B2 以 Orders 加循环序号为文件名,将 A2 中的 300 条数据写入文件
拆分为多个文件:
2. 按数据分类拆分
还是上题的订单数据,按 Shippers 分类,每个分类的数据单独一个 Sheet,以分类名作为 Sheet 名,拆分后的结果如下所示:
代码如下:
A |
B |
|
1 |
=T("orders.xlsx") |
=A1.group(Shippers) |
2 |
for B1 |
=file("Ordersm.xlsx").xlsexport@kt(A2;A2.Shippers) |
A1 读入 orders.xlsx 中数据
B1 按 Shippers 分组
A2 循环每个 Shippers 组
B2 以 Shippers 名作为 Sheet 名,将 A2 中的分组数据写入 Sheet
当然也可以将分类内容拆分到多个文件中,将 B2 中的代码改为“=T(A2.Shippers+".xlsx",A2)”即可。表示以 Shippers 名作为文件名,将 A2 中的分组数据写入不同的文件。
生成多个文件。
3. 按条件分段拆分
有订单明细数据文件 OrderDetailExtended.xlsx 如下所示:
按照 ExtendedPrice 列的值分段,按 <500, 从 500-2000,>2000 分成三段,分别存成三个 Excel 文件。拆分后的结果如下所示:
lt500.xlsx:
Mt2000.xlsx:
500-2000.xlsx:
实现代码:
A |
B |
|
1 |
=T("OrderDetailsExtended.xlsx") |
|
2 |
=A1.group(if(ExtendedPrice<500:"lt500.xlsx",ExtendedPrice>2000:"mt2000.xlsx";"500-2000.xlsx"):fileName;~:data) |
|
3 |
for A2 |
=T(A3.fileName,A3.data) |
A1:读入 OrderDetailsExtended.xlsx 文件中的数据
A2:对 A1 按照 ExtendedPrice 列值分组,小于 500,大于 2000,以及介于 500 和 2000 之间,分成三组,用文件名给对应的组取名
A3:按 A2 循环
B3:把每一行中的组数据写入对应的文件中
拆分完成!!!
当然esProcSPL还有很多炫酷的功能,有需要的小伙伴可以去查阅这本书esProc 桌面版与 Excel 处理,职场上90%的Excel问题都能在这本书中找到答案。书中的代码基本上复制过去,稍加改改就可使用。
另外,SPL的安装也很简单,不需要像Python等语言那样还要配置环境,下载后双击就可以桌面安装。
下载地址:» esProc Desktop Download
英文版