使用Python自动化拆分Excel表格

本文将介绍如何使用Python 3.8和openpyxl库,根据指定列的内容将Excel表格拆分为多个新的Excel文件,并保留原始格式。

功能需求

  1. 获取第一个工作表并冻结第一行。
  2. 获取指定列(例如A列)作为表头列,并读取表头内容。
  3. 遍历表格,根据表头列的内容将数据行分组。
  4. 为每个分组创建一个新的工作表,并将分组数据复制到新工作表。
  5. 将每个新工作表保存为独立的Excel文件,文件名以表头内容命名。
  6. 将所有新生成的Excel文件保存在桌面上的指定文件夹中。

Python代码实现

import openpyxl
import os
from openpyxl.utils import get_column_letter

# 获取桌面路径
desktop_path = os.path.join(os.path.expanduser('~'), 'Desktop')

# 创建文件夹
folder_name = 'split_excel'
folder_path = os.path.join(desktop_path, folder_name)
if not os.path.exists(folder_path):
    os.mkdir(folder_path)

# 打开Excel文件
file_path = 'example.xlsx'
wb = openpyxl.load_workbook(file_path)

# 获取第一个工作表
ws1 = wb.worksheets[0]

# 冻结窗格
ws1.freeze_panes = 'A2'

# 获取表头列
header_col = 'A'
header_row = 2
header_values = set()
while ws1[header_col + str(header_row)].value:
    header_value = ws1[header_col + str(header_row)].value
    header_values.add(header_value)
    header_row += 1

# 遍历表格,拆分工作表
for header_value in header_values:
    # 创建新的工作表
    ws_new = wb.create_sheet(title=header_value)

    # 写入第一行内容
    ws_new['A1'] = ws1['A1'].value

    # 写入表头
    header_row = 2
    for col in range(1, ws1.max_column + 1):
        col_letter = get_column_letter(col)
        if ws1[col_letter + str(header_row)].value == header_value:
            for row in range(1, ws1.max_row + 1):
                ws_new[col_letter + str(row)] = ws1[col_letter + str(row)].value
                ws_new[col_letter + str(row)].font = ws1[col_letter + str(row)].font
                ws_new[col_letter + str(row)].fill = ws1[col_letter + str(row)].fill
                ws_new[col_letter + str(row)].border = ws1[col_letter + str(row)].border
                ws_new[col_letter + str(row)].alignment = ws1[col_letter + str(row)].alignment

    # 保存新的工作表为单独的Excel文件
    file_name = header_value + '.xlsx'
    file_path = os.path.join(folder_path, file_name)
    wb_new = openpyxl.Workbook()
    wb_new.remove(wb_new.active)
    wb_new.add_sheet(ws_new)
    wb_new.save(file_path)

# 关闭Excel文件
wb.close()

代码说明

  1. 导入必要的库:openpyxl用于操作Excel文件,os用于处理文件和目录。
  2. 获取桌面路径和创建目标文件夹。
  3. 打开Excel文件并获取第一个工作表。
  4. 冻结第一行,方便查看数据。
  5. 获取表头列和表头内容。
  6. 遍历表格,根据表头列内容将数据行分组。
  7. 为每个分组创建新的工作表,并将分组数据复制到新工作表,包括格式信息。
  8. 将每个新工作表保存为独立的Excel文件,文件名以表头内容命名。
  9. 关闭Excel文件。

通过以上步骤,您可以使用Python轻松地根据指定列的内容将Excel表格拆分为多个新的Excel文件,并保留原始格式。

Python自动化拆分表格:按列内容生成新的Excel文件

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

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