使用 Python Openpyxl 库拆分 Excel 表格并保存

以下代码演示了如何使用 Python Openpyxl 库将 Excel 表格根据指定列内容进行拆分,并将每个拆分后的表格以对应单元格内容命名,生成独立的 Excel 文件并保存到桌面上的文件夹中。代码还展示了如何冻结第一个工作表的窗格 A1 行内容,并将该内容带原格式复制到每个新工作表中。pythonimport osfrom openpyxl import load_workbook, Workbookfrom openpyxl.utils import get_column_letterfrom openpyxl.styles import NamedStyle

设置工作簿路径和表头列名称workbook_path = 'example.xlsx'header_col_name = 'Name'

加载工作簿wb = load_workbook(workbook_path)

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

冻结第一个工作表窗格 A1 行的内容ws.freeze_panes = 'A2'

获取表头列的索引和名称header_col_index = Nonefor col in range(1, ws.max_column + 1): if ws.cell(row=2, column=col).value == header_col_name: header_col_index = col break

if header_col_index is None: raise ValueError(f'Cannot find column '{header_col_name}'')

创建一个新的工作簿和样式new_wb = Workbook()new_ws_style = NamedStyle(name='header')new_ws_style.font = ws.cell(row=2, column=header_col_index).fontnew_ws_style.fill = ws.cell(row=2, column=header_col_index).fillnew_ws_style.border = ws.cell(row=2, column=header_col_index).bordernew_ws_style.alignment = ws.cell(row=2, column=header_col_index).alignment

遍历表格,根据表头列的值拆分工作表for row in range(3, ws.max_row + 1): cell_value = ws.cell(row=row, column=header_col_index).value if cell_value is None: continue

# 创建一个新的工作表    new_ws = new_wb.create_sheet(title=cell_value)    new_ws.append([ws.cell(row=2, column=col).value for col in range(1, ws.max_column + 1)])    new_ws.row_dimensions[1].height = ws.row_dimensions[2].height    new_ws.column_dimensions['A'].width = ws.column_dimensions['A'].width    new_ws.column_dimensions[get_column_letter(header_col_index)].width = ws.column_dimensions[get_column_letter(header_col_index)].width    new_ws['A1'].style = new_ws_style    new_ws[f'{get_column_letter(header_col_index)}1'].style = new_ws_style

# 复制行数据到新的工作表    for col in range(1, ws.max_column + 1):        new_ws.cell(row=2, column=col).value = ws.cell(row=row, column=col).value        new_ws.cell(row=2, column=col).font = ws.cell(row=row, column=col).font        new_ws.cell(row=2, column=col).fill = ws.cell(row=row, column=col).fill        new_ws.cell(row=2, column=col).border = ws.cell(row=row, column=col).border        new_ws.cell(row=2, column=col).alignment = ws.cell(row=row, column=col).alignment

# 写入窗格 A1 的内容    new_ws['A1'].value = ws['A1'].value    new_ws['A1'].font = ws['A1'].font    new_ws['A1'].fill = ws['A1'].fill    new_ws['A1'].border = ws['A1'].border    new_ws['A1'].alignment = ws['A1'].alignment

创建一个新的文件夹并保存工作簿folder_path = os.path.join(os.path.expanduser('~'), 'Desktop', header_col_name)if not os.path.exists(folder_path): os.mkdir(folder_path)

for sheet in new_wb.worksheets: sheet_path = os.path.join(folder_path, f'{sheet.title}.xlsx') new_wb.save(sheet_pat

Python Openpyxl库:按表格列内容拆分Excel文件并保存

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

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