Python合并多个Excel文件的方法实现与对比
<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li><a href="#_label0">前提条件</a></li><li><a href="#_label1">方法一:将多个 Excel 文件合并成一个工作簿(多个工作表)</a></li><ul class="second_class_ul"><li><a href="#_lab2_1_0">代码示例</a></li><li><a href="#_lab2_1_1">工作原理</a></li></ul><li><a href="#_label2">方法二:将多个 Excel 文件合并到一个工作表中</a></li><ul class="second_class_ul"><li><a href="#_lab2_2_2">代码示例</a></li><li><a href="#_lab2_2_3">工作原理</a></li></ul><li><a href="#_label3">总结</a></li><ul class="second_class_ul"></ul></ul></div><p>在日常工作中,处理多个 Excel 文件并将它们合并为一个文件,常常是数据分析、报告生成等工作的必要步骤。对于数据分析师、业务人员以及任何需要处理大量 Excel 数据的人来说,这是一项常见且繁琐的任务。与其手动复制粘贴不同工作表中的数据,不如使用 Python 自动化这一过程,既省时又高效。</p><p>本文将介绍两种使用 Python 合并 Excel 文件的方法。这些方法可以帮助您简化合并过程,尤其是在处理大数据集时,节省大量的时间和精力。</p>
<p class="maodian"><a name="_label0"></a></p><h2>前提条件</h2>
<p>要通过编程方式操作 Excel 文件,您需要一个支持 Excel 文件处理的库。在本篇文章中,我们使用 Spire.XLS for Python,这是一个可以读取、修改和保存 Excel 文件的 Python 库,且不依赖于 Microsoft Excel。</p>
<p>您可以使用以下命令通过 pip 安装该库:</p>
<div class="jb51code"><pre class="brush:bash;">pip install spire.xls
</pre></div>
<p>安装完成后,您就可以在 Python 中操作 Excel 文件,通过 API 提供的样式相关属性,控制单元格对齐、文本旋转等功能。</p>
<p class="maodian"><a name="_label1"></a></p><h2>方法一:将多个 Excel 文件合并成一个工作簿(多个工作表)</h2>
<p>这种方法将多个 Excel 文件合并为一个工作簿,并保留每个文件中的原始工作表。适用于您希望保留文件原有结构,同时又需要将多个文件合并到一个工作簿中的情况。</p>
<p class="maodian"><a name="_lab2_1_0"></a></p><p class="maodian"><a name="_lab2_2_2"></a></p><h3>代码示例</h3>
<div class="jb51code"><pre class="brush:py;">import os
from spire.xls import *
# 存放要合并的 Excel 文件的文件夹
input_folder = './sample_files'
# 合并后的工作簿文件名
output_file = 'merged_workbook.xlsx'
# 初始化合并的工作簿
merged_workbook = None
# 遍历输入文件夹中的所有文件
for filename in os.listdir(input_folder):
# 只处理 .xls 或 .xlsx 格式的 Excel 文件
if filename.endswith('.xlsx') or filename.endswith('.xls'):
file_path = os.path.join(input_folder, filename)
# 加载当前的 Excel 文件
source_workbook = Workbook()
source_workbook.LoadFromFile(file_path)
if merged_workbook is None:
# 第一个文件作为基础合并工作簿
merged_workbook = source_workbook
else:
# 后续文件将其工作表复制到合并工作簿中
for i in range(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)
</pre></div>
<p class="maodian"><a name="_lab2_1_1"></a></p><p class="maodian"><a name="_lab2_2_3"></a></p><h3>工作原理</h3>
<ul><li><strong>设置文件夹路径</strong>:指定存放 Excel 文件的文件夹(<code>input_folder</code>)。</li><li><strong>遍历文件</strong>:脚本会检查文件夹中的每个文件,确保它们是 <code>.xls</code> 或 <code>.xlsx</code> 格式的文件。</li><li><strong>加载工作簿</strong>:对于每个文件,脚本将其加载到 <code>Workbook</code> 对象中。</li><li><strong>合并工作表</strong>:第一个文件初始化了 <code>merged_workbook</code>,后续文件的工作表会被复制到这个工作簿中。</li><li><strong>保存输出</strong>:最后,合并后的工作簿会保存到指定的文件。</li></ul>
<p><strong>输出:</strong></p>
<p>最终输出将是一个名为 <code>merged_workbook.xlsx</code> 的 Excel 文件,包含了所有 Excel 文件的工作表。</p>
<p class="maodian"><a name="_label2"></a></p><h2>方法二:将多个 Excel 文件合并到一个工作表中</h2>
<p>在这种方法中,我们将多个 Excel 文件的数据合并到一个工作表中。这种方法非常适合将不同工作表中的数据合并为一个工作表,数据按文件顺序依次排列。</p>
<h3>代码示例</h3>
<div class="jb51code"><pre class="brush:py;">import os
from spire.xls import *
# 存放要合并的 Excel 文件的文件夹
input_folder = './excel_worksheets'
# 合并后的工作簿文件名
output_file = 'merged_into_one_sheet.xlsx'
# 创建一个新的工作簿来存放合并的数据
merged_workbook = Workbook()
# 使用新工作簿中的第一个工作表作为目标工作表
merged_sheet = merged_workbook.Worksheets
# 初始化开始复制数据的行
current_row = 1
# 遍历输入文件夹中的所有文件
for filename in os.listdir(input_folder):
# 只处理 .xls 或 .xlsx 格式的 Excel 文件
if filename.endswith('.xlsx') or filename.endswith('.xls'):
file_path = os.path.join(input_folder, filename)
# 加载当前的 Excel 文件
workbook = Workbook()
workbook.LoadFromFile(file_path)
# 获取当前工作簿的第一个工作表
sheet = workbook.Worksheets
# 获取工作表中已使用的范围
source_range = sheet.Range
# 设置目标工作表中的复制范围,从当前行开始
dest_range = merged_sheet.Range
# 将数据从源范围复制到目标范围
source_range.Copy(dest_range)
# 更新 current_row,确保不会覆盖已复制的数据
current_row += sheet.LastRow
# 将合并后的工作簿保存到指定的输出文件
merged_workbook.SaveToFile(output_file, ExcelVersion.Version2016)
</pre></div>
<h3>工作原理</h3>
<ul><li><strong>初始化工作簿</strong>:创建一个新的工作簿来存放所有合并的数据。</li><li><strong>遍历文件</strong>:像方法一一样,脚本会遍历文件夹中的所有 Excel 文件。</li><li><strong>复制数据</strong>:对于每个文件,脚本将其第一个工作表的数据复制到目标工作表中。</li><li><strong>更新行索引</strong>:<code>current_row</code> 用来确保每个文件的数据不会覆盖,自动跳到下一个可用的行。</li><li><strong>保存输出</strong>:将合并后的数据保存到 <code>merged_into_one_sheet.xlsx</code> 文件中。</li></ul>
<p><strong>输出:</strong></p>
<p>结果将是一个工作表,包含了来自所有 Excel 文件的数据,数据按文件顺序排列。</p>
<p class="maodian"><a name="_label3"></a></p><h2>总结</h2>
<p>将多个 Excel 文件合并为一个文件是一个常见的任务,尤其是当您需要处理大量文件时,手动操作非常繁琐。使用 Python 和 Spire.XLS 库,您可以轻松地自动化这一过程,从而节省大量时间和精力。</p>
<ul><li><strong>方法一</strong> 适合当您希望保留每个文件的结构,并将其工作表保留在独立标签中的场景。</li><li><strong>方法二</strong> 更适合将多个工作表的数据合并到一个工作表中,便于汇总或分析信息。</li></ul>
<p>这两种方法都可以根据您的需求进行自定义,设置好之后,它们将极大地提升您的工作效率,尤其是在处理多个 Excel 文件时。</p>
頁:
[1]