Python 3.0+ Excel表格拆分:按姓名生成单独表格
以下是利用 Python 3.0 以上版本将 Excel 表格拆分成单独的新表,并按照姓名生成新的表格的代码:
import openpyxl
# 打开原始 Excel 文件
wb = openpyxl.load_workbook('original_file.xlsx')
# 获取所有工作表名字
sheet_names = wb.sheetnames
# 循环遍历每一个工作表
for sheet_name in sheet_names:
# 打开当前工作表
ws = wb[sheet_name]
# 获取第二行的所有单元格
row_two = ws[2]
# 遍历第二行单元格,找到姓名这一列
for cell in row_two:
if cell.value == '姓名':
name_column = cell.column_letter
break
# 创建一个字典,用于存储每个姓名对应的行内容
name_rows = {}
# 遍历所有行,将每一行按照姓名存储到字典中
for row in ws.iter_rows(min_row=3):
name = row[int(name_column) - 1].value
if name not in name_rows:
name_rows[name] = []
name_rows[name].append(row)
# 将每个姓名对应的行内容生成新的表格
for name, rows in name_rows.items():
# 创建一个新的工作表
new_sheet = wb.create_sheet(title=name)
# 复制第一行的格式
for i in range(1, ws.max_column+1):
new_sheet.cell(row=1, column=i)._style = ws.cell(row=1, column=i)._style
# 复制每个姓名对应的行内容
for i, row in enumerate(rows):
for j, cell in enumerate(row):
new_sheet.cell(row=i+2, column=j+1).value = cell.value
new_sheet.cell(row=i+2, column=j+1)._style = cell._style
# 删除原始工作表
wb.remove(ws)
# 保存新生成的 Excel 文件
wb.save('new_file.xlsx')
这段代码将会读取一个名为original_file.xlsx的 Excel 文件,然后将其拆分成多个单独的 Excel 表格。每个表格的命名方式为该表格中姓名一列对应的姓名。生成的新表格会保留原表格中窗格行 A1 的格式。最后,新的 Excel 文件将会保存为new_file.xlsx。
原文地址: https://www.cveoy.top/t/topic/ovjN 著作权归作者所有。请勿转载和采集!