Python3.8 使用 Openpyxl 拆分表格并生成单独 Excel 文件
以下是实现该功能的代码:
import os
from openpyxl import load_workbook, Workbook
from openpyxl.utils import get_column_letter
# 设置工作表表头列名称
header_column = '姓名'
# 设置文件夹名称
folder_name = '拆分表格'
# 获取桌面路径
desktop_path = os.path.join(os.path.expanduser('~'), 'Desktop')
# 创建文件夹
folder_path = os.path.join(desktop_path, folder_name)
if not os.path.exists(folder_path):
os.mkdir(folder_path)
# 加载原始excel文件
filename = '原始表格.xlsx'
wb = load_workbook(filename)
# 获取第一个工作表
ws = wb.active
# 冻结窗格A1列
ws.freeze_panes = 'A2'
# 获取表头列的位置
header_column_index = None
for col in range(1, ws.max_column + 1):
if ws.cell(row=1, column=col).value == header_column:
header_column_index = col
break
# 如果表头列不存在,则退出程序
if header_column_index is None:
print(f'表头列 {header_column} 不存在!')
exit()
# 获取表头列中所有不同的值
header_values = set()
for row in range(2, ws.max_row + 1):
header_value = ws.cell(row=row, column=header_column_index).value
if header_value is not None:
header_values.add(header_value)
# 遍历表头列中的每个值,生成新的工作表
for header_value in header_values:
# 创建新的工作表
new_wb = Workbook()
new_ws = new_wb.active
# 写入窗格A1的内容
new_ws['A1'].value = ws['A1'].value
# 写入表头行
for col in range(1, ws.max_column + 1):
new_ws.cell(row=2, column=col).value = ws.cell(row=1, column=col).value
new_ws.cell(row=2, column=col)._style = ws.cell(row=1, column=col)._style
# 写入符合条件的行
row_index = 3
for row in range(2, ws.max_row + 1):
if ws.cell(row=row, column=header_column_index).value == header_value:
for col in range(1, ws.max_column + 1):
new_ws.cell(row=row_index, column=col).value = ws.cell(row=row, column=col).value
new_ws.cell(row=row_index, column=col)._style = ws.cell(row=row, column=col)._style
row_index += 1
# 设置新工作表的名称
new_ws.title = header_value
# 保存新的工作表到单独的excel文件
new_filename = f'{header_value}.xlsx'
new_filepath = os.path.join(folder_path, new_filename)
new_wb.save(new_filepath)
# 关闭原始excel文件
wb.close()
使用该代码可以实现拆分表格并生成单独的excel文件。其中,需要将代码中的以下变量设置为实际值:
header_column:表头列名称folder_name:文件夹名称filename:原始excel文件名称
在运行代码之后,程序会在桌面上创建一个名为 拆分表格 的文件夹,并在该文件夹下生成多个单独的excel文件,每个文件的名称都是表头列中不同的值。每个excel文件中的工作表都包含原始表格中符合条件的行,并且窗格A1的内容都是原始表格中的内容。
原文地址: https://www.cveoy.top/t/topic/fW7t 著作权归作者所有。请勿转载和采集!