以下代码使用 Python 3.8 版本的 openpyxl 库,实现了将一个 Excel 表格根据第一行表头信息拆分到多个 Excel 文件的功能。每个新的 Excel 文件包含对应表头列的所有数据,并保留了原始格式和 A1 格的内容。

import os
import openpyxl
from openpyxl.styles import colors, Font, Alignment
from openpyxl.utils import get_column_letter

# 设置工作目录和文件名
os.chdir('/Users/username/Desktop')
filename = 'example.xlsx'

# 打开工作簿并获取第一个工作表
wb = openpyxl.load_workbook(filename)
sheet = wb.active

# 冻结窗格 A1
sheet.freeze_panes = 'A2'

# 获取表头列名
header = []
for col in range(1, sheet.max_column + 1):
    if sheet.cell(row=1, column=col).value:
        header.append(sheet.cell(row=1, column=col).value)

# 根据表头列名拆分工作表
for col_name in header:
    new_wb = openpyxl.Workbook()
    new_sheet = new_wb.active

    # 复制窗格 A1 的内容到新工作表
    new_sheet['A1'] = sheet['A1'].value
    new_sheet['A1'].font = Font(bold=True)
    new_sheet['A1'].alignment = Alignment(horizontal='center')
    new_sheet.freeze_panes = 'A2'

    # 复制表头到新工作表
    for col in range(1, sheet.max_column + 1):
        if sheet.cell(row=1, column=col).value == col_name:
            for row in range(1, sheet.max_row + 1):
                new_sheet.cell(row=row, column=col).value = sheet.cell(row=row, column=col).value
                new_sheet.cell(row=row, column=col).font = sheet.cell(row=row, column=col).font
                new_sheet.cell(row=row, column=col).alignment = sheet.cell(row=row, column=col).alignment

    # 保存新工作表为单独的 excel 文件
    new_filename = f'{col_name}.xlsx'
    new_wb.save(new_filename)

    # 将新文件移动到新建的文件夹中
    if not os.path.exists('split_excel'):
        os.mkdir('split_excel')
    os.rename(new_filename, f'split_excel/{new_filename}')

# 关闭工作簿
wb.close()

代码首先设置工作目录和文件名,然后打开工作簿并获取第一个工作表。接着,通过设置freeze_panes属性冻结窗格 A1 行的内容,并获取表头列名。然后,根据表头列名拆分工作表,将每个表头列中所有相同内容的行带原格式生成一个新的工作表,并带原格式把窗格 A1 的内容写入到每一个新的工作表。最后,将新的工作表生成单独的 excel 文件并以获取到的列中的单元格内容命名,新建一个文件夹保存到桌面中。

Python Openpyxl 拆分表格:按列提取数据并生成独立 Excel 文件

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

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