要把一整个文件夹里的文件名批量导进excel,核心就靠两个公式:先在名称管理器里用 =files("文件夹路径\*.*") 捞出全部文件列表,再用 =index(名称,row(a1)) 逐行把文件名调取出来。这次操作演示用的是wps表格,微软excel的逻辑完全一样,也是在「公式」选项卡下找名称管理器;如果用的是旧版wps或者老版本excel,先确认软件支持files这个宏表函数再往下操作。
第一步:打开名称管理器
先新建空白表格,切到顶部的「公式」选项卡,点开「名称管理器」。别直接在单元格里输FILES,这是Excel 4.0宏表函数,得先放到名称定义里,之后才能交给INDEX调用。

第二步:定义FILES公式
在名称管理器里点「新建」,名称栏可以填“获取文件名”。下方的「引用位置」按格式填 =FILES("D:\资料\*.*") ,把示例里的路径换成你自己要提取的文件夹路径就行;末尾的 *.* 代表匹配这个文件夹下的所有类型文件。

第三步:复制文件夹路径
路径别手动敲,容易输错。打开你要提取文件名的目标文件夹,点一下顶部的地址栏,直接复制完整路径,再切回名称管理器粘贴。公式里自带的反斜杠保留,路径后面再接 \*.* 就行;少了最后这段的话,软件不知道要匹配哪些文件,直接会报错。

第四步:用INDEX拉出文件名
切回工作表,在A2单元格输入 =INDEX(获取文件名,ROW(A1)) ,然后直接向下填充公式。ROW(A1) 会返回数字1,往下拖的时候自动变成2、3、4,相当于让INDEX按顺序依次取出列表里的第1个、第2个、第3个文件名。

第五步:去掉扩展名
如果只想保留不带后缀的纯文件名,可以在B2单元格写 =MID(A2,1,LEN(A2)-4) ,再向下填充。这个写法适配.doc、.xls这类3位扩展名的文件;遇到.xlsx、.docx这类4位扩展名的,要把公式末尾的数字4改成5,把点号和后缀一起截掉。
本文档主要介绍如何通过python对office excel进行读写操作,使用了xlrd、xlwt和xlutils模块。另外还演示了如何通过Tcl tcom包对excel操作。感兴趣的朋友可以过来看看

两个核心公式的写法
| 公式 | 放在哪里 | 作用 |
|---|---|---|
=FILES("D:\资料\*.*") |
名称管理器的“引用位置” | 返回指定文件夹中的文件名列表 |
=INDEX(获取文件名,ROW(A1)) |
工作表单元格 | 按序号从“获取文件名”这个列表里取出一个文件名 |
FILES函数语法和参数
FILES(directory_text) 只有一个参数:directory_text。参数要写成带英文双引号的目录文本,可以加通配符,一般填绝对路径就行。
| 写法 | 含义 | 结果范围 |
|---|---|---|
"D:\资料\*.*" |
取 D 盘“资料”文件夹下的所有文件 | 所有扩展名 |
"D:\资料\*.xlsx" |
只取 Excel 工作簿 | 扩展名为 xlsx 的文件 |
"D:\资料\合同*.*" |
只取“合同”开头的文件 | 合同2026.xlsx、合同模板.docx 等 |
INDEX公式的参数
INDEX(array,row_num,[column_num]) 这里我们只用前两个参数:array 填之前在名称管理器里定义好的名称,比如刚才的“获取文件名”;row_num 填 ROW(A1),向下填充的时候会自动生成连续的序号。column_num 是可选参数,咱们取的文件名列表只有一列,不用填。
| 参数 | 本例写法 | 说明 |
|---|---|---|
array |
获取文件名 |
名称管理器里定义出的文件列表 |
row_num |
ROW(A1) |
从 1 开始取第几个文件名 |
column_num |
省略 | 列表只有一列时不需要 |
常见错误和处理
如果公式返回 #REF! 报错,先看是不是向下填充的行数超过了文件夹里的实际文件总数:文件夹里只有20个文件,拖到第21行自然就会报这个错。要是刚输完公式就报错,重点检查路径、英文双引号、反斜杠和通配符有没有输错,用了中文引号、漏写 \*.*、路径本身不存在,都会导致文件名列表读取失败。
几个常用的改法参考:只想提取Word文档,就把FILES公式改成 =FILES("D:\资料\*.docx");只想提取文件名以“发票”开头的文件,就写 =FILES("D:\资料\发票*.*");想单独把后缀名拆出来,可以在旁边单元格输 =RIGHT(A2,LEN(A2)-FIND(".",A2)) 直接提取扩展名。最后提醒一句,整理完记得把公式结果全选,粘贴为纯数值,不然之后文件夹里的内容变动,你做好的文件名清单也会跟着同步乱掉。










