4种方法用Python批量实现多Excel多Sheet合并

简介: 4种方法用Python批量实现多Excel多Sheet合并


在数据处理中,经常需要将多个Excel文件中的多个工作表进行合并。以下介绍了4种方法,使用Python批量实现多Excel多Sheet的合并。

方法一:使用pandas库

Pandas是Python中常用的数据处理库,提供了简便的数据处理功能。我们可以使用pandas的read_excel()函数读取Excel文件,然后使用concat()函数将多个工作表进行合并。

import pandas as pd  
  
# 读取Excel文件  
file_list = ['file1.xlsx', 'file2.xlsx']  
dfs = [pd.read_excel(file) for file in file_list]  
  
# 合并多个工作表  
result = pd.concat(dfs, ignore_index=True)  
  
# 保存到新的Excel文件  
result.to_excel('merged.xlsx', index=False)

方法二:使用openpyxl库

Openpyxl是Python中处理Excel文件的库,可以直接操作Excel文件。我们可以使用openpyxl的load_workbook()函数读取Excel文件,然后使用Workbook和Worksheet类创建新的工作簿和工作表,将多个工作表的数据复制到新的工作表中,最后保存为新的Excel文件。

from openpyxl import load_workbook  
from openpyxl.utils import get_column_letter  
from openpyxl.utils import range_boundaries  
from openpyxl.writer.excel import save_virtual_workbook  
from openpyxl import Workbook  
from openpyxl.utils import get_column_letter  
from openpyxl.utils.dataframe import dataframe_to_rows  
  
# 读取Excel文件  
file_list = ['file1.xlsx', 'file2.xlsx']  
merged_wb = Workbook()  
merged_ws = merged_wb.active  
merged_ws.title = "merged"  
headers = []  # 存储每个工作表的列名  
for file in file_list:  
    wb = load_workbook(filename=file)  
    ws = wb.active  # 获取第一个工作表  
    for row in ws[1:]:  # 获取列名  
        headers.append(row[0].value)  # 将列名添加到headers列表中  
    for row in ws:  # 获取数据行并复制到新的工作表中  
        new_row = []  # 存储新的一行数据  
        for cell in row:  # 遍历每个单元格并复制数据到新的行中  
            new_row.append(cell.value)  # 将单元格的值添加到新的行中  
        dataframe_to_rows(pd.DataFrame([new_row], columns=headers), index=False).map(lambda x: x.pop('Unnamed: 0'), axis=1).map(int).to_excel(merged_ws, index=False, header=False)  # 将新的行复制到新的工作表中,并设置数据类型为整数型  
merged_wb.save("merged.xlsx")  # 保存为新的Excel文件

方法三:使用xlrd和xlwt库

xlrd和xlwt是Python中用于读写Excel文件的库,可以处理.xls和.xlsx格式的文件。我们可以使用xlrd的open_workbook()函数读取Excel文件,然后使用Worksheet类获取工作表对象,遍历工作表中的所有数据,将数据写入新的Excel文件中。

import xlrd  
import xlwt  
  
# 读取Excel文件  
file_list = ['file1.xls', 'file2.xls']  
workbook = xlrd.open_workbook(file_list[0])  
  
# 创建新的Excel文件  
new_workbook = xlwt.Workbook()  
new_sheet = new_workbook.add_sheet('merged')  
  
# 获取第一个工作表  
sheet = workbook.sheet_by_index(0)  
  
# 合并多个工作表  
row = 0  # 当前行的索引  
for col in range(sheet.ncols):  # 遍历所有列  
    new_sheet.write(row, col, sheet.cell_value(0, col))  # 将列名写入新的工作表中  
    for row in range(1, sheet.nrows):  # 遍历所有数据行  
        new_sheet.write(row + row, col, sheet.cell_value(row, col))  # 将数据写入新的工作表中  
  
new_workbook.save('merged.xls')  # 保存为新的Excel文件

方法四:使用os和glob库

如果需要批量处理多个文件夹中的多个Excel文件,可以使用os和glob库来获取所有需要处理的文件。然后使用上述方法处理每个文件中的多个工作表,最后将结果保存到新的Excel文件中。

import os  
import glob  
import pandas as pd  
  
# 获取所有需要处理的Excel文件  
file_list = []  
folder_path = 'path/to/folder'  # Excel文件所在的文件夹路径  
for file in glob.glob(os.path.join(folder_path, '*.xlsx')):  # 获取所有.xlsx文件  
    file_list.append(file)  
  
# 合并多个工作表并保存到新的Excel文件中  
result = pd.DataFrame()  # 存储合并后的数据  
for file in file_list:  
    df = pd.read_excel(file)  # 读取Excel文件中的数据到DataFrame中  
    result = pd.concat([result, df])  # 将数据追加到结果中  
result.to_excel('merged.xlsx', index=False)  # 将结果保存到新的Excel文件中

在上述方法中,我们可以根据实际需求选择适合的方法进行多Excel多Sheet的合并。方法一和方法二适用于处理单个Excel文件中的多个工作表,而方法三和方法四则适用于批量处理多个Excel文件中的多个工作表。在实际应用中,我们可以根据数据量的大小、处理速度的要求以及个人偏好选择适合的方法。

注意事项

使用Python批量实现多Excel多Sheet合并时,需要注意以下事项:

  1. 文件路径和文件名:确保提供的文件路径和文件名正确无误,避免出现文件找不到或路径错误的情况。
  2. 文件格式和版本:确保所有要合并的Excel文件都是相同格式(如.xlsx)和版本,以免出现不兼容或读取错误。
  3. 表格格式和内容:在合并前,检查每个工作表的结构和内容是否一致,是否存在不同的列或数据类型。如果有差异,需要进行相应的处理或调整。
  4. 空值和缺失值:在合并过程中,可能会遇到空值或缺失值的情况。需要对这些值进行适当处理,例如填充、忽略或保留原始格式。
  5. 重复数据:合并多个Excel文件时,可能会存在重复的数据行。需要编写适当的逻辑来处理这些重复数据,例如保留最新的数据或根据特定条件进行筛选。
  6. 性能和内存使用:对于大量数据和多个Excel文件的合并操作,需要注意程序的性能和内存使用情况。如果数据量较大,可能需要考虑分批处理或使用更高效的数据处理方法。
  7. 错误处理:在合并过程中,可能会遇到各种错误,如文件损坏、格式不正确等。编写适当的错误处理逻辑可以帮助识别和处理这些错误,避免程序崩溃或数据丢失。
  8. 代码可维护性和可读性:编写易于理解和维护的代码可以提高代码的质量和可读性。注释、清晰的变量名和使用有意义的函数和方法名称等都是提高代码可读性的有效方法。
  9. 文档和注释:为代码添加文档和注释可以帮助其他人理解你的代码逻辑和实现方式。这对于团队合作或代码维护非常有用。
  10. 测试和验证:在合并之前,对每个单独的Excel文件进行测试和验证可以确保合并操作的有效性和准确性。通过比较合并前后的数据,可以发现潜在的问题并进行相应的修复。

此外,除了上述方法外,还有一些第三方库如pyexcelerate等也可以实现多Excel多Sheet的合并。这些库提供了更多的功能和灵活性,可以根据实际需求选择适合的库进行使用。

相关文章
|
26天前
|
测试技术 API Python
【10月更文挑战第1天】python知识点100篇系列(13)-几种方法让你的电脑一直在工作
【10月更文挑战第1天】 本文介绍了如何通过Python自动操作鼠标或键盘使电脑保持活跃状态,避免自动息屏。提供了三种方法:1) 使用PyAutoGUI,通过安装pip工具并执行`pip install pyautogui`安装,利用`moveRel()`方法定时移动鼠标;2) 使用Pymouse,通过`pip install pyuserinput`安装,采用`move()`方法移动鼠标绝对位置;3) 使用PyKeyboard,同样需安装pyuserinput,模拟键盘操作。文中推荐使用PyAutoGUI,因其功能丰富且文档详尽。
|
2天前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
20 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
WK
|
13天前
|
Python
Python中format_map()方法
在Python中,`format_map()`方法用于使用字典格式化字符串。它接受一个字典作为参数,用字典中的键值对替换字符串中的占位符。此方法适用于从字典动态获取值的场景,尤其在处理大量替换值时更为清晰和方便。
WK
65 36
|
23天前
|
机器学习/深度学习 数据采集 数据挖掘
11种经典时间序列预测方法:理论、Python实现与应用
本文将总结11种经典的时间序列预测方法,并提供它们在Python中的实现示例。
58 2
11种经典时间序列预测方法:理论、Python实现与应用
|
28天前
|
数据处理 Python
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
这篇文章介绍了如何使用Python读取Excel文件中的数据,处理后将其保存为txt、xlsx和csv格式的文件。
44 3
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
|
17天前
|
Python
python读写操作excel日志
主要是读写操作,创建表格
48 2
|
20天前
|
开发者 Python
Python中的魔法方法与运算符重载
在Python的奇妙世界里,魔法方法(Magic Methods)和运算符重载(Operator Overloading)是两个强大的特性,它们允许开发者以更自然、更直观的方式操作对象。本文将深入探讨这些概念,并通过实例展示如何利用它们来增强代码的可读性和表达力。
|
1月前
|
Python
Python中的push方法详解与实例
Python中的push方法详解与实例
|
1月前
|
存储 Python
python列表操作和方法
python列表操作和方法
25 1
|
27天前
|
Linux Python
Python获得本机本地ip地址的方法
【10月更文挑战第8天】 socket模块包含了丰富的函数和方法,可以获取主机的ip地址,例如gethostbyname方法可以根据主机名获取ip地址,gethostbyname_ex方法可以获得本机所有ip地址列表,也可以使用netifaces模块获取网卡信息。
30 0
下一篇
无影云桌面