Python自动化拆分Excel表格:按列内容分组并生成新的工作簿
使用Python自动化拆分Excel表格
本文将介绍如何使用Python的openpyxl库,根据指定列的内容将一个Excel表格拆分成多个新的工作簿。
问题描述
假设你有一个包含大量数据的Excel表格,你需要根据某一列(例如'姓名'列)的内容,将表格拆分成多个以该列内容命名的新的Excel文件。例如,表格中所有'姓名'为'张三'的行应该被提取到一个名为'张三.xlsx'的新文件中,所有'姓名'为'李四'的行应该被提取到一个名为'李四.xlsx'的新文件中,以此类推。
解决方案
以下Python代码使用openpyxl库实现了上述功能:
import os
import openpyxl
# 设置工作目录和文件名
work_dir = os.path.expanduser('~/Desktop')
file_name = 'example.xlsx'
file_path = os.path.join(work_dir, file_name)
# 打开工作簿
workbook = openpyxl.load_workbook(file_path)
# 获取第一个工作表
worksheet = workbook.worksheets[0]
# 冻结窗格A1行
worksheet.freeze_panes = 'A2'
# 获取表头列
header_column = 'A'
header_row = 1
header_cell = worksheet.cell(row=header_row, column=header_column)
header = header_cell.value
# 遍历表格,拆分工作表
for row in worksheet.iter_rows(min_row=2):
cell = row[0]
value = cell.value
if value == header:
# 创建新的工作表
new_worksheet = workbook.create_sheet(title=header)
# 复制行数据和格式
for source_cell, target_cell in zip(row, new_worksheet[row[0].coordinate]):
target_cell._style = source_cell._style
target_cell.value = source_cell.value
# 写入窗格A1行内容
new_worksheet['A1'] = header
# 保存新的工作表到单独的文件
new_file_name = f'{header}.xlsx'
new_file_path = os.path.join(work_dir, new_file_name)
workbook.save(new_file_path)
# 关闭工作簿
workbook.close()
代码说明
- 导入必要的库:
os用于处理文件路径,openpyxl用于操作Excel文件。 - 设置工作目录、文件名和文件路径。
- 使用
openpyxl.load_workbook()函数打开Excel文件。 - 获取第一个工作表。
- 使用
worksheet.freeze_panes属性冻结第一行,方便查看数据。 - 获取表头列的字母和行号,并读取表头内容。
- 使用
worksheet.iter_rows()遍历表格的所有行,从第二行开始。 - 对于每一行,获取指定列单元格的内容。
- 如果单元格内容与表头内容相同,则创建一个新的工作表,并将当前行的内容和格式复制到新工作表中。
- 将表头内容写入新工作表的A1单元格。
- 使用
workbook.save()函数将新工作表保存到一个新的Excel文件中,文件名根据表头内容命名。 - 最后关闭工作簿。
总结
本文介绍了如何使用Python的openpyxl库自动化拆分Excel表格。通过学习本教程,你可以更高效地处理大量数据,并根据需要将其拆分到不同的文件中。
原文地址: https://www.cveoy.top/t/topic/fW7F 著作权归作者所有。请勿转载和采集!