You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写脚本从指定文件夹多Excel文件按列名提取列并存为CSV或追加到文本

批量提取Excel指定列脚本实现(Python)

依赖安装

处理.xls格式文件需要用到pandas和指定版本的xlrd库,执行以下命令安装:

pip install pandas xlrd==1.2.0

注:xlrd 2.0及以上版本移除了对.xls格式的支持,所以指定安装1.2.0版本。

完整脚本

import os
import pandas as pd

# -------------------------- 可修改配置项 --------------------------
TARGET_FOLDER = r"C:\你的\目标\文件夹路径"  # 存放.xls文件的文件夹
TARGET_COLUMN_NAME = "你要提取的列名"  # 需要匹配的目标列名,要和Excel里的列名完全一致
OUTPUT_FILE_PATH = r"C:\你的\输出\结果.csv"  # 输出文件,后缀为.txt就存文本,.csv就存CSV格式
INCLUDE_HEADER = True  # 输出文件第一行是否保留列名
SHEET_INDEX = 0  # 读取每个Excel的第几个sheet,默认0是第一个sheet
# -------------------------------------------------------------------

def main():
    # 校验输出文件后缀
    support_suffix = [".txt", ".csv"]
    if not any(OUTPUT_FILE_PATH.lower().endswith(suf) for suf in support_suffix):
        raise ValueError("仅支持输出.txt或.csv格式的文件")

    # 遍历目标文件夹下所有.xls文件
    xls_file_list = [f for f in os.listdir(TARGET_FOLDER) if f.lower().endswith(".xls")]
    if not xls_file_list:
        print("目标文件夹下未找到.xls格式文件")
        return

    first_write = True
    for file_name in xls_file_list:
        file_full_path = os.path.join(TARGET_FOLDER, file_name)
        print(f"正在处理文件:{file_name}")
        try:
            # 读取Excel文件指定sheet
            df = pd.read_excel(file_full_path, sheet_name=SHEET_INDEX)
            # 匹配目标列
            if TARGET_COLUMN_NAME not in df.columns:
                print(f"文件{file_name}中未找到目标列,跳过")
                continue
            # 提取目标列
            target_df = df[[TARGET_COLUMN_NAME]]
            # 写入输出文件,追加模式
            target_df.to_csv(
                OUTPUT_FILE_PATH,
                mode="a",
                header=INCLUDE_HEADER if first_write else False,
                index=False,
                sep="\n" if OUTPUT_FILE_PATH.lower().endswith(".txt") else ","
            )
            if first_write:
                first_write = False
        except Exception as e:
            print(f"处理文件{file_name}失败,错误信息:{str(e)}")
            continue

    print(f"处理完成,结果已保存至:{OUTPUT_FILE_PATH}")

if __name__ == "__main__":
    main()

使用说明

  • 替换脚本中可修改配置项区间的参数为你实际的需求即可运行
  • 输出为txt格式时,每行存储一条列内容;输出为csv格式时,为标准单列CSV文件
  • 匹配列名时默认是精确匹配,如需忽略大小写,可以将匹配逻辑改为TARGET_COLUMN_NAME.lower() in [col.lower() for col in df.columns],同时提取时先找到对应的原列名再提取

注意事项

  • 仅支持处理扩展名为.xls的旧版Excel文件,如需支持.xlsx格式,可安装openpyxl库后,将文件后缀判断逻辑补充.xlsx即可
  • 若Excel文件存在合并单元格、空表头的情况,需要先清理Excel文件的表头结构,否则会出现列名识别错误的问题
  • 处理大量文件时可根据需要添加进度提示,也可以对重复内容做去重处理,只需在提取列后调用drop_duplicates()方法即可

内容的提问来源于stack exchange,提问作者Myna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 00:06:06