任务教程 · 数据接入

KNIME 批量读取整个文件夹的 Excel

十二个月的月报放在一个文件夹里,要一次全读进来拼成一张表。不用写循环,一个节点就够。

节点串

Excel Reader文件夹模式
已经是拼好的一张表
String Manipulation从文件名取月份
Column Filter删掉用不上的列
GroupBy汇总

关键在第一个节点。它自己会遍历文件夹并把各文件纵向拼起来,输出的已经是一张完整的表。

不要用循环。很多人第一反应是 Loop Start 加 Loop End 逐个文件读。功能上能做到,但慢、要自己处理行 ID 撞车、画布还长。读取节点自带的文件夹模式是为这件事做的。

关键配置

只讲这个任务里必须改的几项,其余保持默认。参数的完整说明在 Excel Reader 那一篇里。

Excel Reader 文件夹模式
来源Read from
文件文件夹 改成文件夹,下面才会出现过滤和子目录的选项。
文件过滤Filter options
*.xlsx 务必设。同一个文件夹里常混着别的文件,不设会去读不该读的。
工作表选择Sheet selection
第一个工作表按序号按名称 批量读时别按名称。各文件的工作表名往往不完全一致,遇到一个对不上就整体失败。
表头所在行
按实际填 报表上方常有标题和制表日期。不设的话那些文字会变成列名。
附加来源文件列Append path column
勾上 这一项是整个任务的关键。勾上后每行会多一列记录它来自哪个文件 – 后面靠它区分月份,也靠它定位是哪个文件的数据有问题。

从文件名里取出月份

文件名如果是 固定资产_2026-03.xlsx 这种规律形式,用 String Manipulation 从来源文件列里截出月份,就得到了一个可以分组的维度。

// 从完整路径里取出月份,按你的文件名规律调整 substr($Path$, indexOf($Path$, “_”) + 1, 7)

写法要按实际文件名调整。规律不明显时,先点开输出表看一眼来源文件列长什么样再动手。

文件名不规律就别硬截。让出数据的人统一命名规则,比在这里写一段复杂的正则划算得多。这是能从源头解决就别在流程里绕的典型例子。

分步看一个文件夹怎么变成一张表

三个月报文件走完这条流程。点上一步下一步,看每一步之后表长什么样。琥珀色的格子是这一步新增或改动的地方。

三个结构相同的月报

文件名有规律,都是「固定资产_年-月.xlsx」。注意最后那个以 ~$ 开头的 – 那是有人正开着某个文件时 Excel 生成的临时文件,读它必然失败。

文件名行数说明
固定资产_2026-01.xlsx2正常
固定资产_2026-02.xlsx1正常
固定资产_2026-03.xlsx1正常
~$固定资产_2026-03.xlsxExcel 临时文件,要靠过滤条件排除

一个节点直接输出拼好的一张表

不需要循环,也不需要 Concatenate。勾了「附加来源文件列」之后多出最右边那一列 – 后面靠它区分月份,出问题时也靠它定位是哪个文件。

资产编号所属部门原值来源文件
FA-001信息部86000固定资产_2026-01.xlsx
FA-002行政部4200固定资产_2026-01.xlsx
FA-003行政部63000固定资产_2026-02.xlsx
FA-004信息部7800固定资产_2026-03.xlsx

从文件名里截出月份

来源文件列是完整路径,按文件名规律截取即可。有了这一列,后面才能按月分组。文件名不规律的话,先让出数据的人统一命名,比在这里写复杂正则划算。

资产编号所属部门原值月份
FA-001信息部860002026-01
FA-002行政部42002026-01
FA-003行政部630002026-02
FA-004信息部78002026-03

把用不上的列删掉

月份已经取出来了,完整路径那一列就不用带下去。列越早删越好 – 后面每一步的配置列表都短,运行也更省内存。

资产编号所属部门月份原值
FA-001信息部2026-0186000
FA-002行政部2026-014200
FA-003行政部2026-0263000
FA-004信息部2026-037800

三个会绊住人的地方

  1. 文件夹里有 Excel 的临时文件。有人正开着某个文件时,同目录会生成一个以 ~$ 开头的隐藏临时文件。文件过滤如果只写 *.xlsx,它也符合条件,读它必然失败。跑之前确认没人开着文件,或者把过滤条件写得更具体一些。
  2. 某一个文件的结构和其他不一样。十二个文件里有一个多了一列或者表头位置不同,整个节点就失败。报错信息里通常会指出是哪个文件 – 这也是要勾「附加来源文件列」的另一个理由。修法是先统一模板,或者把那个特殊文件单独读。
  3. 列的顺序不同但列名相同。这个不影响 – 读取节点按列名对齐,不按位置。列名有细微差异(多个空格)才会出问题。

换成你的数据要改哪里

要改的地方怎么改
文件夹路径用相对路径,别用绝对路径。换台机器跑绝对路径必然失效
文件过滤条件按你的文件命名规律写,尽量具体
表头所在行打开一个样本文件数一下
取月份的表达式按你的文件名规律改截取位置
要保留哪些列Column Filter 里选。列越早删越好,后面每一步都省事

某个文件死活读不进来

先把它单独用一个 Excel Reader 读一次。单独能读说明是结构差异,读不了说明文件本身有问题。

iModel 专属客服
在线留言或电话联系
在线留言

留下您的问题和联系方式,我们会在一个工作日内回复。

手机与邮箱至少填一项

4008568196 拨打此号码联系我们

微信扫码咨询

iModel 微信咨询二维码

使用微信扫描上方二维码