使用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()

代码说明

  1. 导入必要的库:os 用于处理文件路径,openpyxl 用于操作Excel文件。
  2. 设置工作目录、文件名和文件路径。
  3. 使用 openpyxl.load_workbook() 函数打开Excel文件。
  4. 获取第一个工作表。
  5. 使用 worksheet.freeze_panes 属性冻结第一行,方便查看数据。
  6. 获取表头列的字母和行号,并读取表头内容。
  7. 使用 worksheet.iter_rows() 遍历表格的所有行,从第二行开始。
  8. 对于每一行,获取指定列单元格的内容。
  9. 如果单元格内容与表头内容相同,则创建一个新的工作表,并将当前行的内容和格式复制到新工作表中。
  10. 将表头内容写入新工作表的A1单元格。
  11. 使用 workbook.save() 函数将新工作表保存到一个新的Excel文件中,文件名根据表头内容命名。
  12. 最后关闭工作簿。

总结

本文介绍了如何使用Python的openpyxl库自动化拆分Excel表格。通过学习本教程,你可以更高效地处理大量数据,并根据需要将其拆分到不同的文件中。


原文地址: https://www.cveoy.top/t/topic/fW7F 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录