利用python38版本拆分表格首先获取所有工作表然后冻结第一个工作表窗格A1列的内容之后从第二行开始获取名称为表头的列将表头列中所有相同内容的行带原格式复制到新的工作表中并带原格式复制窗格A1的内容到每一个新的工作表新的工作表生成单独的excel文件并以表头列中的内容命名保存到桌面文件夹中
以下是利用openpyxl模块实现上述功能的代码:
import openpyxl
import os
from openpyxl.utils import get_column_letter
# 设置工作目录和桌面路径
os.chdir(r'C:\Users\user\Desktop')
desktop_path = os.path.join(os.path.expanduser("~"), "Desktop")
# 打开原始excel文件
wb = openpyxl.load_workbook('example.xlsx')
# 获取所有工作表
sheets = wb.sheetnames
# 遍历所有工作表
for sheet_name in sheets:
# 获取当前工作表
ws = wb[sheet_name]
# 冻结窗格A1列的内容
ws.freeze_panes = 'B2'
# 获取表头列
header_col = None
for col in range(1, ws.max_column+1):
if ws.cell(row=2, column=col).value == '表头':
header_col = get_column_letter(col)
break
# 如果找到了表头列
if header_col:
# 创建新的工作表
new_wb = openpyxl.Workbook()
new_ws = new_wb.active
# 复制窗格A1的内容
new_ws['A1'] = ws['A1'].value
# 遍历表头列中所有相同内容的行
for row in range(3, ws.max_row+1):
if ws.cell(row=row, column=ws[header_col].column).value == ws.cell(row=2, column=ws[header_col].column).value:
# 复制行
for col in range(1, ws.max_column+1):
new_ws.cell(row=row-2, column=col).value = ws.cell(row=row, column=col).value
new_ws.cell(row=row-2, column=col)._style = ws.cell(row=row, column=col)._style
# 保存新的工作表为单独的excel文件
new_file_name = ws.cell(row=2, column=ws[header_col].column).value + '.xlsx'
new_file_path = os.path.join(desktop_path, new_file_name)
new_wb.save(new_file_path)
需要注意的是,如果表头列中存在空单元格,则需要将代码中的if ws.cell(row=row, column=ws[header_col].column).value == ws.cell(row=2, column=ws[header_col].column).value:修改为if ws.cell(row=row, column=ws[header_col].column).value and ws.cell(row=row, column=ws[header_col].column).value == ws.cell(row=2, column=ws[header_col].column).value:,以避免复制空行
原文地址: https://www.cveoy.top/t/topic/gqm9 著作权归作者所有。请勿转载和采集!