在处理包含相似数据结构的多个 Excel 文件时,合并这些文件可以为数据分析和报告提供全面的视图。通过将不同来源的数据合并在一起,您可以获得一个更完整和综合的数据集,这有助于做出更准确的决策。本文将介绍如何使用 Spire.XLS for Python 库在 Python 中将多个 Excel 文件合并为一个文件。
安装 Spire.XLS for Python
此教程需要 Spire.XLS for Python 和 plum-dispatch v1.7.4。您可以通过以下 pip 命令将它们轻松安装到 Windows 中。
pip install Spire.XLS
如果您不确定如何安装,请参考: 如何在 Windows 中安装 Spire.XLS for Python
Python 将多个 Excel 工作簿合并为一个
Spire.XLS for Python 提供的 Workbook.Worksheets.AddCopy() 方法可将多个工作簿中的工作表复制到一个新的工作簿中,从而实现合并多个 Excel 工作簿。具体步骤如下:
- 将要合并的 Excel 工作簿添加到列表中。
- 初始化 Workbook 对象,创建新工作簿并清除其默认工作表。
- 初始化一个临时 Workbook 对象。
- 遍历列表中的所有工作簿。
- 使用 Workbook.LoadFromFile() 方法将工作簿加载到临时工作簿对象中。
- 遍历临时工作簿中的所有工作表,然后使用 Workbook.Worksheets.AddCopy() 方法将临时工作簿中的每个工作表复制到新创建的工作簿中。
- 使用 Workbook.SaveToFile() 方法保存生成的工作簿。
- Python
from spire.xls import *
from spire.xls.common import *
# 将要合并的Excel工作簿添加到列表中
files = []
files.append("文档1.xlsx" )
files.append("文档2.xlsx")
files.append("文档3.xlsx")
# 创建一个新的工作簿
newbook = Workbook()
# 移除默认工作表
newbook.Worksheets.Clear()
# 创建一个临时工作簿
tempbook = Workbook()
# 遍历列表中的工作簿
for file in files:
# 将工作簿加载到临时工作簿对象中
tempbook.LoadFromFile(file)
# 遍历临时工作簿中的工作表
for sheet in tempbook.Worksheets:
# 将临时工作簿中的工作表复制到新工作簿中
newbook.Worksheets.AddCopy(sheet, WorksheetCopyType.CopyAll)
# 将新工作簿保存为xlsx文件
newbook.SaveToFile("合并Excel.xlsx", ExcelVersion.Version2016)
newbook.Dispose()
tempbook.Dispose()
Python 将多个 Excel 工作表合并为一个
要合并多个 Excel 工作表,可以使用 CellRange.Copy(destRange) 方法将这些工作表中的数据范围复制到单个工作表中。具体步骤如下:
- 初始化 Workbook 对象,并使用 Workbook.LoadFromFile() 方法加载 Excel 工作簿。
- 使用 Workbook.Worksheets[sheetIndex] 属性获取需要合并的两个工作表。请注意工作表索引是从 0 开始的。
- 使用 Workheet.AllocatedRange 属性获取第二个工作表中的数据范围。
- 使用 Worksheet.Range[rowIndex, columnIndex] 属性指定第一个工作表中的目标范围。请注意,行和列索引都是从 1 开始的。
- 使用 CellRange.Copy(destRange) 方法将第二个工作表的数据范围复制到第一个工作表的目标范围。
- 从工作簿中删除第二个工作表。
- 使用 Workbook.SaveToFile() 方法保存生成的工作簿。
- Python
from spire.xls import *
from spire.xls.common import *
# 创建Workbook对象
workbook = Workbook()
# 加载Excel文件
workbook.LoadFromFile("文档.xlsx")
# 获取第一张工作表
sheet1 = workbook.Worksheets[0]
# 获取第二张工作表
sheet2 = workbook.Worksheets[1]
# 获取第二张工作表中的数据范围
sourceRange = sheet2.AllocatedRange
# 在第一张工作表中指定目标范围
destRange = sheet1.Range[sheet1.LastRow + 1, 1]
# 将第二张工作表中的数据范围复制到第一张工作表中的目标范围
sourceRange.Copy(destRange)
# 移除第二张工作表
sheet2.Remove()
# 保存结果文件
workbook.SaveToFile("合并工作表.xlsx", ExcelVersion.Version2016)
workbook.Dispose()
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。