技术文摘
Python 批量合并同一文件夹内子文件夹 Excel 文件所有 Sheet 数据的四种方法
2024-12-31 03:54:46 小编
Python 批量合并同一文件夹内子文件夹 Excel 文件所有 Sheet 数据的四种方法
在数据处理工作中,我们经常会遇到需要将同一文件夹内子文件夹中的多个 Excel 文件的所有 Sheet 数据进行合并的情况。使用 Python 可以高效地实现这一需求,以下介绍四种常见的方法。
方法一:使用 pandas 库
pandas 是 Python 中强大的数据处理库。遍历文件夹和子文件夹获取所有 Excel 文件路径,然后依次读取每个文件的所有 Sheet 数据,使用 concat 函数进行合并。
import pandas as pd
import os
def merge_excels_pandas(folder_path):
file_paths = []
for root, dirs, files in os.walk(folder_path):
for file in files:
if file.endswith('.xlsx'):
file_paths.append(os.path.join(root, file))
data_frames = []
for file_path in file_paths:
excel_file = pd.ExcelFile(file_path)
for sheet_name in excel_file.sheet_names:
data_frames.append(pd.read_excel(file_path, sheet_name=sheet_name))
merged_data = pd.concat(data_frames)
return merged_data
方法二:结合 openpyxl 库
openpyxl 库专门用于处理 Excel 文件。通过类似的文件路径遍历,读取每个 Sheet 的数据并合并。
import openpyxl
import os
def merge_excels_openpyxl(folder_path):
data = []
for root, dirs, files in os.walk(folder_path):
for file in files:
if file.endswith('.xlsx'):
file_path = os.path.join(root, file)
workbook = openpyxl.load_workbook(file_path)
for sheet_name in workbook.sheetnames:
sheet = workbook[sheet_name]
rows = sheet.rows
sheet_data = [[cell.value for cell in row] for row in rows]
data.extend(sheet_data)
return data
方法三:利用 xlrd 库
xlrd 也是处理 Excel 的常用库之一。
import xlrd
import os
def merge_excels_xlrd(folder_path):
data = []
for root, dirs, files in os.walk(folder_path):
for file in files:
if file.endswith('.xls') or file.endswith('.xlsx'):
file_path = os.path.join(root, file)
workbook = xlrd.open_workbook(file_path)
for sheet_index in range(workbook.nsheets):
sheet = workbook.sheet_by_index(sheet_index)
rows = sheet.get_rows()
sheet_data = [[cell.value for cell in row] for row in rows]
data.extend(sheet_data)
return data
方法四:使用 win32com 库(适用于 Windows 系统)
对于 Windows 环境,win32com 库可以提供更直接的 Excel 操作。
import win32com.client
import os
def merge_excels_win32com(folder_path):
excel_app = win32com.client.Dispatch("Excel.Application")
data = []
for root, dirs, files in os.walk(folder_path):
for file in files:
if file.endswith('.xlsx'):
file_path = os.path.join(root, file)
workbook = excel_app.Workbooks.Open(file_path)
for sheet in workbook.Sheets:
rows = sheet.UsedRange.Rows
sheet_data = [[cell.Value for cell in row] for row in rows]
data.extend(sheet_data)
workbook.Close(False)
excel_app.Quit()
return data
以上四种方法各有特点,可以根据实际需求和环境选择合适的方法来批量合并 Excel 文件的 Sheet 数据,提高数据处理的效率。
- Mac 快速关闭显示器的两种快捷键教程
- Mac OS X 中视频音频文件的默认打开方式可否更改
- 如何查询 IPAD 和 IPHONE 的 MAC 地址
- 如何在苹果 Mac 系统中同时打开多个 Finder 标签页
- Mac 系统中安装 gdb 调试器及解决其签名错误的方法
- Mac 键盘自定义设置教程(Mac OS X)
- Mac OS X 系统截图方法及高清图截取教程
- Mac 系统圣诞节如何实现电脑屏幕下雪
- OS X 10.11 系统登录界面壁纸替换方法及自定义教程 - OS X El Capitan 版
- 如何删除 Mac OSX 10.10 系统中重复的 Launchpad 图标
- 苹果 OS X 10.11.2 beta3 的更新内容及公测版发布
- Mac 系统软件应用内文件替换详细指南
- 今日(11.11)苹果推送 OS X 10.11.2 El Capitan 第三个开发者测试版
- 统信桌面操作系统 uos V20 专业版 2023 年首轮更新发布及更新内容汇总
- Mac App Store 打开空白且无法使用的解决之策