这件事必须用循环
前面讲批量读的时候说过不要用循环 – 读取节点自带文件夹模式。批量写反过来:一个 Excel Writer 一次只写一个文件,要写二十个就得跑二十遍,这正是循环的用武之地。
关键节点是分组循环。它按你指定的列把数据分成若干组,每组跑一轮循环体。同时它会提供一个变量,告诉你当前这一轮是哪个组 – 文件名就靠它。
节点串
数据端口变量端口,当前组名从这里来
四个节点。循环体里只有一个写出节点 – 不需要在里面再筛一次,分组循环已经把当前组的数据单独送进来了。
关键配置
-
1 · Group Loop Start分组列
选「所属部门」。有几个不同的部门就跑几轮,每轮送进循环体的是该部门的全部行。分组列的取值数量决定轮数 – 选到唯一值列会跑几万轮,等于卡死。
-
2 · Excel Writer文件名接变量
在流变量页里,把输出路径绑到分组循环提供的当前组变量上。路径形如
output/资产明细_{当前部门}.xlsx。这是整件事的核心 – 不绑变量的话二十轮会写同一个文件,互相覆盖。「文件已存在时」选覆盖。每次重跑本来就该重新生成这批文件。
-
3 · Loop End收尾
循环必须有结尾节点。这个场景里它的输出用不上 – 东西已经写进文件了。留着它只是为了让循环结构完整。
四个会绊住人的地方
- 部门名里有文件名不允许的字符。斜杠、冒号、问号这些在 Windows 文件名里非法,部门名带上就会写出失败。循环体开头加一步 String Manipulation 把这些字符替换掉。
- 部门名有空格变体,拆出来的文件比预期多。「行政部」和「行政部 」会被当成两个组,生成两个文件。循环之前一定要先清洗分组列 – 这也是为什么建议先做数据体检。
- 忘了绑变量,最后只剩一个文件。二十轮都写同一个路径,后一轮盖前一轮。检查办法:跑完看输出目录里有几个文件,和部门数对不对得上。
- 轮数太多跑得很慢。几十轮正常,几千轮就要重新想想是不是分组列选错了。
变体:拆成同一个文件的多个工作表
不想要二十个文件,想要一个文件里二十张工作表 – 做法几乎一样,只改两处:
| 改哪里 | 怎么改 |
|---|---|
| 输出路径 | 固定成一个文件名,不再拼变量 |
| 工作表名 | 改成绑当前组变量 |
| 文件已存在时 | 改成追加工作表,不能选覆盖 – 否则每轮都会把前面写的清掉 |
最后一行是这个变体唯一的坑。选了覆盖,二十轮跑完文件里只剩最后一个部门。改完先小批量试跑两三轮,确认工作表在累加。
换成你的场景要改哪里
| 要改的地方 | 怎么改 |
|---|---|
| 分组依据 | 部门换成机构、项目、供应商、月份都可以 |
| 文件名格式 | 可以再拼上期数,比如 资产明细_{部门}_2026-03.xlsx |
| 每个文件的内容 | 循环体里可以再加清洗和汇总节点,每组各自处理 |
| 输出目录 | 用相对路径,跑之前确认目录存在 |

