当前位置: 首页 > news >正文

Python合并多个Excel文件的方法实现与对比

在日常工作中,处理多个 Excel 文件并将它们合并为一个文件,常常是数据分析、报告生成等工作的必要步骤。对于数据分析师、业务人员以及任何需要处理大量 Excel 数据的人来说,这是一项常见且繁琐的任务。与其手动复制粘贴不同工作表中的数据,不如使用 Python 自动化这一过程,既省时又高效。

本文将介绍两种使用 Python 合并 Excel 文件的方法。这些方法可以帮助您简化合并过程,尤其是在处理大数据集时,节省大量的时间和精力。

前提条件

要通过编程方式操作 Excel 文件,您需要一个支持 Excel 文件处理的库。在本篇文章中,我们使用 Spire.XLS for Python,这是一个可以读取、修改和保存 Excel 文件的 Python 库,且不依赖于 Microsoft Excel。

您可以使用以下命令通过 pip 安装该库:

1

pipinstallspire.xls

安装完成后,您就可以在 Python 中操作 Excel 文件,通过 API 提供的样式相关属性,控制单元格对齐、文本旋转等功能。

方法一:将多个 Excel 文件合并成一个工作簿(多个工作表)

这种方法将多个 Excel 文件合并为一个工作簿,并保留每个文件中的原始工作表。适用于您希望保留文件原有结构,同时又需要将多个文件合并到一个工作簿中的情况。

代码示例

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

importos

fromspire.xlsimport*

# 存放要合并的 Excel 文件的文件夹

input_folder='./sample_files'

# 合并后的工作簿文件名

output_file='merged_workbook.xlsx'

# 初始化合并的工作簿

merged_workbook=None

# 遍历输入文件夹中的所有文件

forfilenameinos.listdir(input_folder):

# 只处理 .xls 或 .xlsx 格式的 Excel 文件

iffilename.endswith('.xlsx')orfilename.endswith('.xls'):

file_path=os.path.join(input_folder, filename)

# 加载当前的 Excel 文件

source_workbook=Workbook()

source_workbook.LoadFromFile(file_path)

ifmerged_workbookisNone:

# 第一个文件作为基础合并工作簿

merged_workbook=source_workbook

else:

# 后续文件将其工作表复制到合并工作簿中

foriinrange(source_workbook.Worksheets.Count):

sheet=source_workbook.Worksheets.get_Item(i)

merged_workbook.Worksheets.AddCopy(sheet, WorksheetCopyType.CopyAll)

# 将合并后的工作簿保存到指定的文件

merged_workbook.SaveToFile(output_file, ExcelVersion.Version2016)

工作原理

  • 设置文件夹路径:指定存放 Excel 文件的文件夹(input_folder)。
  • 遍历文件:脚本会检查文件夹中的每个文件,确保它们是.xls.xlsx格式的文件。
  • 加载工作簿:对于每个文件,脚本将其加载到Workbook对象中。
  • 合并工作表:第一个文件初始化了merged_workbook,后续文件的工作表会被复制到这个工作簿中。
  • 保存输出:最后,合并后的工作簿会保存到指定的文件。

输出:

最终输出将是一个名为 ​​merged_workbook.xlsx​​ 的 Excel 文件,包含了所有 Excel 文件的工作表。

方法二:将多个 Excel 文件合并到一个工作表中

在这种方法中,我们将多个 Excel 文件的数据合并到一个工作表中。这种方法非常适合将不同工作表中的数据合并为一个工作表,数据按文件顺序依次排列。

代码示例

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

importos

fromspire.xlsimport*

# 存放要合并的 Excel 文件的文件夹

input_folder='./excel_worksheets'

# 合并后的工作簿文件名

output_file='merged_into_one_sheet.xlsx'

# 创建一个新的工作簿来存放合并的数据

merged_workbook=Workbook()

# 使用新工作簿中的第一个工作表作为目标工作表

merged_sheet=merged_workbook.Worksheets[0]

# 初始化开始复制数据的行

current_row=1

# 遍历输入文件夹中的所有文件

forfilenameinos.listdir(input_folder):

# 只处理 .xls 或 .xlsx 格式的 Excel 文件

iffilename.endswith('.xlsx')orfilename.endswith('.xls'):

file_path=os.path.join(input_folder, filename)

# 加载当前的 Excel 文件

workbook=Workbook()

workbook.LoadFromFile(file_path)

# 获取当前工作簿的第一个工作表

sheet=workbook.Worksheets[0]

# 获取工作表中已使用的范围

source_range=sheet.Range

# 设置目标工作表中的复制范围,从当前行开始

dest_range=merged_sheet.Range[current_row,1]

# 将数据从源范围复制到目标范围

source_range.Copy(dest_range)

# 更新 current_row,确保不会覆盖已复制的数据

current_row+=sheet.LastRow

# 将合并后的工作簿保存到指定的输出文件

merged_workbook.SaveToFile(output_file, ExcelVersion.Version2016)

工作原理

  • 初始化工作簿:创建一个新的工作簿来存放所有合并的数据。
  • 遍历文件:像方法一一样,脚本会遍历文件夹中的所有 Excel 文件。
  • 复制数据:对于每个文件,脚本将其第一个工作表的数据复制到目标工作表中。
  • 更新行索引current_row用来确保每个文件的数据不会覆盖,自动跳到下一个可用的行。
  • 保存输出:将合并后的数据保存到merged_into_one_sheet.xlsx文件中。

输出:

结果将是一个工作表,包含了来自所有 Excel 文件的数据,数据按文件顺序排列。

总结

将多个 Excel 文件合并为一个文件是一个常见的任务,尤其是当您需要处理大量文件时,手动操作非常繁琐。使用 Python 和 Spire.XLS 库,您可以轻松地自动化这一过程,从而节省大量时间和精力。

  • 方法一适合当您希望保留每个文件的结构,并将其工作表保留在独立标签中的场景。
  • 方法二更适合将多个工作表的数据合并到一个工作表中,便于汇总或分析信息。

这两种方法都可以根据您的需求进行自定义,设置好之后,它们将极大地提升您的工作效率,尤其是在处理多个 Excel 文件时。

http://www.jsqmd.com/news/569525/

相关文章:

  • 第十二章:数据质检(QC)步骤详解
  • 那张看不见的蜘蛛网:马尔可夫随机场到底在捕捉什么?(上篇)
  • PyTorch 2.8镜像效果展示:FlashAttention-2加速下大模型推理速度提升300%
  • Phi-4-mini-reasoning生产环境:vLLM服务稳定性与Chainlit前端容错设计
  • MetaTube插件:智能元数据整合引擎的技术架构深度解析
  • 《金融时报》2026 FT 法国商学院排名(全法前十)
  • Graphormer镜像免配置实践:预编译CUDA算子+静态链接避免运行时依赖冲突
  • 第十七章:Skill 文件与 AI 集成
  • Wan2.2-I2V-A14B后端服务开发:Node.js构建高性能视频生成API网关
  • Bug占卜师:用系统崩溃预测未来
  • 服饰解构AI新标杆:Nano-Banana软萌拆拆屋在服装博物馆数字化中的应用
  • 2026防脱精华液哪家好?科学测评帮你选对产品 - 品牌排行榜
  • AI工作猎手:10倍提升求职效率的终极AI自动化简历投递工具
  • 【JAVA基础面经】深拷贝与浅拷贝
  • 基于Gradio的实时口罩检测系统搭建:从镜像部署到界面操作的完整教程
  • SUNFLOWER MATCH LAB跨平台开发:Java与Python混合编程实战
  • Phi-4-mini-reasoning效果展示:逻辑题‘如果A则B,非B,所以?’的准确归因
  • springboot+vue基于web的高校学生成绩管理系统设计系统
  • 2026年,探秘云南钢筋网片专业工厂
  • 【AI模型】社区-ModelScope
  • 2026防脱精华液哪家靠谱?成分与效果实测对比指南 - 品牌排行榜
  • NVIDIA Profile Inspector 终极指南:免费解锁显卡隐藏性能的完整教程
  • 万物识别镜像高级功能探索:除了基础识别,还能做什么?
  • 【机械视觉】Halcon实战:Hough变换在工业检测中的高效应用与参数调优
  • Nanbeige 4.1-3B像素前端快速上手:3步搭建复古JRPG风格AI聊天室
  • Wan2.2-I2V-A14B企业级部署案例:单卡24GB显存实现高并发视频API服务
  • FaceAware在社交应用中的实际应用:提升用户头像体验的7个场景
  • Anything to RealCharacters效果评测:与Stable Diffusion ControlNet写实方案对比
  • 2026年推荐一款好用的护发精油,秀发柔顺有光泽 - 品牌排行榜
  • cv_unet_image-colorization实操手册:侧边栏上传+主区对比+下载三步闭环