利用Python脚本把文件夹里的CSV批量导入Excel的完整代码

 更新时间:2026年10月01日 06:32:49   作者:咕白m625  
日常数据处理中,经常遇到需要把一批CSV文件汇总到一个Excel工作簿的场景——每个CSV对应一个工作表,方便统一查看和分发,本文介绍了如何使用Free Spire.XLS for Python免费库直接将CSV加载为工作簿对象,再将其工作表复制到目标工作簿中,代码量很少

日常数据处理中,经常遇到需要把一批 CSV 文件汇总到一个 Excel 工作簿的场景——每个 CSV 对应一个工作表,方便统一查看和分发。Python 原生 csv 模块可以读取数据,但要逐个写入 Excel 的不同工作表,还需要额外的写入逻辑。使用 Free Spire.XLS for Python 免费库可以直接将 CSV 加载为工作簿对象,再将其工作表复制到目标工作簿中,代码量很少。

环境准备

通过 pip 安装免费版本即可,支持 Python 3.6+ 以及 Windows、macOS、Linux:

pip install Spire.Xls.Free

Free Spire.XLS for Python 无需安装 Microsoft Excel,在服务器或无桌面环境中也能运行。需要注意,免费版对 .xls 格式的读写有工作表数量限制(每个工作簿最多 5 个,每个工作表最多 200 行);如果输出为 .xlsx 格式,则不触发这一限制。对于工作表数量较多或行数较大的场景,建议输出 .xlsx。

核心思路

单个 CSV 文件用 Workbook.LoadFromFile() 加载后,数据会出现在工作簿的第一个工作表(索引 0)中。要合并多个 CSV,可以:

  1. 创建一个目标 Workbook;
  2. 遍历 CSV 文件列表,每个文件单独加载;
  3. 用 Worksheets.AddCopy() 将其工作表复制到目标工作簿;
  4. 重命名复制过来的工作表,便于区分;
  5. 保存目标工作簿为 .xlsx。

AddCopy 方法会连同数据、格式一并复制,第二个参数 WorksheetCopyType.CopyAll 可确保完整性。

完整代码

以下脚本将指定目录下所有 CSV 文件合并到一个 Excel 文件中,每个 CSV 对应一个工作表:

import os
import glob
from spire.xls import *
from spire.xls.common import *


def merge_csv_to_excel(csv_dir, output_path, delimiter=","):
    """
    将目录下的所有 CSV 文件合并到一个 Excel 文件中。
    每个 CSV 对应一个工作表,工作表名取自文件名(不含扩展名)。

    参数:
        csv_dir: CSV 文件所在目录
        output_path: 输出 Excel 文件路径(建议 .xlsx)
        delimiter: CSV 分隔符,默认逗号
    """
    csv_files = glob.glob(os.path.join(csv_dir, "*.csv"))
    if not csv_files:
        print("未找到 CSV 文件")
        return

    # 创建目标工作簿
    target_book = Workbook()

    # 删除默认生成的空白工作表(保留一个作为占位,后续按需删除)
    # 这里先不删,处理完第一个文件后再统一处理

    for idx, file_path in enumerate(csv_files):
        file_name = os.path.splitext(os.path.basename(file_path))[0]

        # 加载单个 CSV 文件
        source_book = Workbook()
        source_book.LoadFromFile(file_path, delimiter, 1, 1)

        # 获取 CSV 解析后的工作表
        source_sheet = source_book.Worksheets[0]

        # 复制到目标工作簿
        target_book.Worksheets.AddCopy(source_sheet, WorksheetCopyType.CopyAll)

        # 重命名新复制的工作表
        new_sheet = target_book.Worksheets[target_book.Worksheets.Count - 1]
        new_sheet.Name = file_name[:31]  # Excel 工作表名最长 31 个字符

        source_book.Dispose()

        print(f"已导入: {file_name}")

    # 删除目标工作簿中最初的空白工作表
    # 默认 Workbook() 会创建 3 个工作表,删除未使用的
    for i in range(target_book.Worksheets.Count - 1, -1, -1):
        sheet = target_book.Worksheets[i]
        # 如果工作表名仍是默认的 Sheet1/Sheet2/Sheet3,且不在已导入的列表中
        if sheet.Name in ["Sheet1", "Sheet2", "Sheet3"]:
            target_book.Worksheets.RemoveAt(i)

    # 保存为 xlsx
    target_book.SaveToFile(output_path, FileFormat.Version2016)
    target_book.Dispose()
    print(f"\n合并完成: {output_path}")


if __name__ == "__main__":
    merge_csv_to_excel(
        csv_dir="./csv_files",
        output_path="./merged_output.xlsx",
        delimiter=","
    )

几个关键点

  1. LoadFromFile 的参数。 LoadFromFile(fileName, separator, startRow, startColumn) 中,separator 指定分隔符,不限于逗号。如果处理的是制表符分隔的 TSV,传入 "\t" 即可;分号分隔的欧洲数据文件传入 ";"。
  2. 工作表命名。 Excel 工作表名最长 31 个字符,且不能包含 \ / ? * [ ] : 等字符。上面的代码用 file_name[:31] 做了截断,如果实际文件名中包含特殊字符,建议再做一次替换处理。
  3. 删除默认工作表。 Workbook() 初始化时会自动创建 3 个空白工作表。上面的代码在导入完成后遍历删除名称为 Sheet1/Sheet2/Sheet3 的工作表,但要注意如果 CSV 文件名恰好也叫 Sheet1.csv,会产生误删。更稳妥的做法是在创建目标工作簿后立即清空默认工作表:
target_book = Workbook()
while target_book.Worksheets.Count > 0:
    target_book.Worksheets.RemoveAt(0)

这样 AddCopy 添加的工作表从第一个开始,逻辑更干净。但需要注意,如果删除所有工作表后直接 AddCopy,部分版本可能报错,此时可以先保留一个再替换。根据实际库版本调整即可。

  1. 非 UTF-8 编码的 CSV。 如果 CSV 文件使用 GBK 等编码,LoadFromFile 可能无法正确解析中文。这种情况下可以先用 Python 的 csv 模块读取并转码为临时文件,再交给 Spire.XLS 加载,或者确认该库当前版本是否支持通过参数指定编码。

这个脚本适合轻量自动化场景,把零散 CSV 归集到一个 Excel 工作簿,每个文件单独一个 sheet。Free Spire.XLS for Python 的优势在于脱离 Office 环境运行,CSV 导入 API 封装简洁,不需要手动逐行读写单元格。

到此这篇关于利用Python脚本把文件夹里的CSV批量导入Excel的完整代码的文章就介绍到这了,更多相关Python文件夹CSV批量导入Excel内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python-numpy实现灰度图像的分块和合并方式

    Python-numpy实现灰度图像的分块和合并方式

    今天小编就为大家分享一篇Python-numpy实现灰度图像的分块和合并方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • Python中6种中文文本情感分析的方法详解

    Python中6种中文文本情感分析的方法详解

    中文文本情感分析是一种将自然语言处理技术应用于文本数据的方法,它可以帮助我们了解文本中所表达的情感倾向,Python中就有多种方法可以进行中文文本情感分析,下面就来和大家简单讲讲
    2023-06-06
  • 浅谈python3中input输入的使用

    浅谈python3中input输入的使用

    这篇文章主要介绍了浅谈python3中input输入的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • python psutil库安装教程

    python psutil库安装教程

    这篇文章给大家介绍了python psutil库安装教程,首先要确认本机已安装python环境,具体安装过程大家参考下本文
    2018-03-03
  • Python详细对比讲解break和continue区别

    Python详细对比讲解break和continue区别

    这篇文章主要介绍了python循环控制语句 break 与 continue,break就像是终止按键,不管执行到哪一步,只要遇到break,不管什么后续步骤,直接跳出当前循环
    2022-06-06
  • selenium学习教程之定位以及切换frame(iframe)

    selenium学习教程之定位以及切换frame(iframe)

    这篇文章主要给大家介绍了关于selenium学习教程之定位以及切换frame(iframe)的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • 基于Python编写一个简单的Gitee数据备份工具

    基于Python编写一个简单的Gitee数据备份工具

    这篇文章主要介绍了如何使用Python实现Gitee数据备份工具,支持将本地文件自动备份到Gitee仓库,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下
    2026-03-03
  • Django Admin 上传文件到七牛云的示例代码

    Django Admin 上传文件到七牛云的示例代码

    这篇文章主要介绍了Django Admin 上传文件到七牛云的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • 利用Python绘画双摆操作分享

    利用Python绘画双摆操作分享

    这篇文章主要介绍了利用Python画双摆,绘画双摆的过程主要包括以下步骤,双摆问题、运动过程及公式推导过程,下文详细介绍,需要的小伙伴可以参考一下
    2022-04-04
  • Python实现针对含中文字符串的截取功能示例

    Python实现针对含中文字符串的截取功能示例

    这篇文章主要介绍了Python实现针对含中文字符串的截取功能,结合具体实例形式分析了Python针对utf-8及gb18030编码的中文字符串截取操作相关实现技巧,需要的朋友可以参考下
    2017-09-09

最新评论