节点手册 · 读写

KNIME Excel Reader 读取 Excel 用法

IO → Read → Excel Reader

把 xlsx 或 xls 读成数据表。整个文件夹批量读也是这一个节点,不需要写循环。公式列和合并单元格是它两个最容易翻车的地方。

它解决什么问题

读单个 Excel 文件、读其中某个工作表、或者一次读进整个文件夹里格式相同的一批文件并自动摞成一张表。绝大多数分析流程的第一个节点就是它。

批量读不要用循环。配置里把来源从「文件」改成「文件夹」,它自己会遍历并纵向拼接,还能附加一列记录每行来自哪个文件。用 Loop 手写一遍不但慢,还要自己处理行 ID 重复。

基本信息

英文原名Excel Reader
中文名称Excel 读取器(iModel 中文界面)
节点库位置IO → Read → Excel Reader
输入端口无必需端口。可选一个文件系统连接端口,用于读远程或受控目录
输出端口1 个数据表
支持格式xlsx、xlsm、xls

配置项逐条

  • Source / Read from来源

    选单个文件还是整个文件夹。选文件夹时还能设过滤条件,比如只读 *.xlsx、只读文件名含「月报」的。同一个文件夹里混着别的文件时必须设,否则会去读不该读的。

  • Sheet selection工作表选择

    三种选法:第一个工作表、按名称、按位置序号。批量读多个文件时优先按序号或「第一个」 – 各文件的工作表名往往不完全一致,按名称选会在某个文件上直接失败。

  • Table contains column names in row表头所在行

    表头不在第一行时填实际行号。国内报表上面常有一到三行大标题和制表日期,不设这一项,那些标题会变成列名,整张表就废了。

  • Sheet area读取区域

    限定只读某个行列范围。表格右边挂着备注、下面挂着合计行和签字栏时用得上,比读进来再删干净。

  • Formula evaluation公式处理方式

    KNIME 不会重新计算 Excel 公式,它读的是文件里存着的上次计算结果。这一项决定读不到结果时怎么办:置空、报错、或者退而读公式文本本身。默认置空最安全。

  • Limit rows for type detection类型推断扫描行数

    它靠扫描前若干行来猜每列是数字还是文本。脏值出现在扫描范围之外,执行时才会炸。数据量大且质量不稳时,把这个值调大,或者干脆手工指定列类型。

三个常见坑

  1. 公式列读进来是空的或者是旧值。文件如果是程序生成、从没被 Excel 打开保存过,公式格里就没有缓存结果,KNIME 读到的是空。修法:让出数据的人保存一次,或者请上游直接给数值不给公式。这一条在自动化报表场景里非常常见。
  2. 合并单元格只有左上角那格有值。Excel 里视觉上跨了五行的「信息部」,读进来只有第一行是「信息部」,后面四行全空。这是文件本来的存法,不是节点的问题。读进来后接 Missing Value 节点,用「取上一个非空值」向下填充。
  3. 日期变成了五位数字。Excel 内部把日期存成序号,单元格格式没设对时读出来就是 45292 这种。用日期转换类节点按 Excel 序号还原,别手工算。

什么时候该换别的节点

情况换成
文件是 csv 或 txtCSV Reader,编码要单独设,中文文件多为 GBK
一个文件里多个工作表都要读,且结构不同放多个 Excel Reader 各读各的,别指望一个节点解决
要把结果写回 ExcelExcel Writer,多张表可写进同一个工作簿的不同工作表
数据在数据库里DB Connector 加 DB Query Reader

读进来的表和 Excel 里看到的不一样

先确认表头行号和读取区域这两项,八成问题出在这里。还不对就把 Excel 截图和节点输出表一起发过来。

iModel 专属客服
网页直接对话,无需微信
4008568196 拨打此号码联系我们

微信扫码咨询

iModel 微信咨询二维码

使用微信扫描上方二维码