使用 Python Openpyxl 拆分表格并按表头列分类生成独立 Excel 文件

本教程将演示如何使用 Python Openpyxl 库拆分表格,将相同表头列内容的行带原格式生成独立的 Excel 文件,并保存到桌面新建文件夹中。

代码:

import openpyxl
import os
from openpyxl.styles import PatternFill, Border, Side, Alignment, Protection, Font


# 创建文件夹
def create_folder(path):
    folder = os.path.exists(path)
    if not folder:
        os.makedirs(path)


# 写入新的工作表
def write_new_sheet(wb, data, sheet_name):
    # 创建新的工作表
    new_sheet = wb.create_sheet(title=sheet_name)
    # 写入窗格A1的内容
    new_sheet['A1'] = wb.active['A1'].value
    # 冻结窗格A1
    new_sheet.freeze_panes = 'A2'
    # 写入表头
    for i in range(len(data[0])):
        new_sheet.cell(row=2, column=i+1, value=data[0][i].value)
        new_sheet.cell(row=2, column=i+1).font = Font(bold=True)
    # 写入数据
    for i in range(1, len(data)):
        for j in range(len(data[i])):
            new_sheet.cell(row=i+2, column=j+1, value=data[i][j].value)
            new_sheet.cell(row=i+2, column=j+1).border = data[i][j].border
            new_sheet.cell(row=i+2, column=j+1).fill = data[i][j].fill
            new_sheet.cell(row=i+2, column=j+1).font = data[i][j].font
            new_sheet.cell(row=i+2, column=j+1).number_format = data[i][j].number_format
            new_sheet.cell(row=i+2, column=j+1).protection = data[i][j].protection
            new_sheet.cell(row=i+2, column=j+1).alignment = data[i][j].alignment


# 拆分表格
def split_workbook(file_path):
    # 打开工作簿
    wb = openpyxl.load_workbook(file_path)
    # 获取第一个工作表
    sheet = wb.active
    # 冻结窗格A1
    sheet.freeze_panes = 'A2'
    # 获取表头列
    header = {}
    for col in sheet.iter_cols(min_row=2, max_row=2):
        for cell in col:
            header[cell.value] = cell.column_letter
    # 遍历表格数据,生成新的工作表
    for row in sheet.iter_rows(min_row=3):
        data = []
        for cell in row:
            data.append(cell)
        # 获取表头列的值
        col_value = data[int(header['表头列']) - 1].value
        # 创建新的工作簿
        new_wb = openpyxl.Workbook()
        # 写入新的工作表
        write_new_sheet(new_wb, sheet.iter_rows(), sheet_name=col_value)
        # 保存新的工作簿
        create_folder(os.path.join(os.path.expanduser('~'), 'Desktop', 'Split_Workbook'))
        new_wb.save(os.path.join(os.path.expanduser('~'), 'Desktop', 'Split_Workbook', f'{col_value}.xlsx'))


if __name__ == '__main__':
    split_workbook('test.xlsx')

代码解释:

  1. create_folder(path) 函数:

    • 创建名为 'Split_Workbook' 的文件夹,并将它保存在桌面。
  2. write_new_sheet(wb, data, sheet_name) 函数:

    • 创建一个新的工作表,命名为 sheet_name
    • 将原工作表中的 A1 内容复制到新工作表 A1。
    • 冻结新工作表 A1 行。
    • 写入表头和数据,并保留原始格式。
  3. split_workbook(file_path) 函数:

    • 打开指定的 Excel 文件 file_path
    • 获取第一个工作表。
    • 冻结窗格 A1 行。
    • 从第二行获取表头列,将表头列的值存入字典 header 中,key 为表头列值,value 为列字母。
    • 遍历表格数据,从第三行开始,获取表头列值,并使用该值作为新工作表名称。
    • 创建新的工作簿,并调用 write_new_sheet 函数写入数据,并将新的工作簿保存到桌面新建的文件夹中。

使用说明:

  1. 将以上代码保存为 Python 文件(例如 split_excel.py)。
  2. 将需要拆分的 Excel 文件命名为 test.xlsx 并放在与 Python 文件相同的目录下。
  3. 运行 Python 文件:python split_excel.py
  4. 拆分后的 Excel 文件将保存在桌面新建的 Split_Workbook 文件夹中,每个文件以表头列值命名。

注意:

  • 代码中的 表头列 是表头列名称,需要根据实际情况修改。
  • 该代码仅适用于单工作表 Excel 文件。
  • 可以根据需要修改代码,以满足其他需求。

希望本教程能帮助你使用 Python Openpyxl 库高效地拆分表格!

Python Openpyxl 拆分表格:按表头列分类生成独立 Excel 文件

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

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