使用Python openpyxl库拆分Excel表格

本文将介绍如何使用Python的openpyxl库,根据指定列的内容,将一个Excel表格拆分成多个新的Excel文件。

功能需求

  1. 获取Excel表格的第一个工作表。2. 冻结第一个工作表窗格A1行的内容。3. 找到名为'表头'的列,并获取该列所有不同的值。4. 针对'表头'列的每个不同值,创建一个新的工作表,并将原表格中所有该列内容与该值相同的行复制到新工作表中。5. 将原表格中窗格A1的内容复制到每个新工作表中。6. 将每个新工作表保存为单独的Excel文件,文件名以'表头'列的对应值命名。7. 将所有新生成的Excel文件保存到桌面上的'新文件夹'中。

代码实现pythonimport osimport openpyxlfrom openpyxl.utils import get_column_letterfrom openpyxl.styles import NamedStyle

创建一个新的样式,用于冻结窗格freeze_style = NamedStyle(name='freeze_style')freeze_style.freeze_panes = 'A2'

打开原始excel文件wb = openpyxl.load_workbook('原始文件.xlsx')

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

冻结窗格ws1['A2'].style = freeze_style

获取表头的列header_col = 'A'for col in range(1, ws1.max_column+1): if ws1.cell(row=1, column=col).value == '表头': header_col = get_column_letter(col) break

遍历表头列中的所有不同值unique_values = set(ws1[header_col][1:].values)for value in unique_values: # 创建一个新的工作表 new_ws = wb.create_sheet(title=value)

# 写入窗格A1的内容    new_ws['A1'] = ws1['A1'].value

# 复制符合条件的行    for row in range(2, ws1.max_row+1):        if ws1.cell(row=row, column=ws1[header_col][1].column).value == value:            for col in range(1, ws1.max_column+1):                new_ws.cell(row=row-1, column=col, value=ws1.cell(row=row, column=col).value).style = ws1.cell(row=row, column=col).style

# 保存新的工作表到单独的excel文件中    if not os.path.exists('新文件夹'):        os.makedirs('新文件夹')    wb_new = openpyxl.Workbook()    wb_new.remove(wb_new.active)    wb_new.add(new_ws)    wb_new.save(f'新文件夹/{value}.xlsx')

保存修改后的原始excel文件wb.save('原始文件.xlsx')

使用说明

  1. 安装openpyxl库: pip install openpyxl2. 将代码保存为Python文件(例如 split_excel.py)。3. 将需要拆分的Excel文件命名为 原始文件.xlsx,并将其与Python文件放在同一目录下。4. 运行Python脚本。

运行脚本后,将会在桌面创建一个名为'新文件夹'的文件夹,拆分后的Excel文件将保存在该文件夹内。

总结

本教程介绍了如何使用Python的openpyxl库进行Excel表格拆分,并提供了详细的代码示例和使用说明。希望本教程能帮助你提高办公效率,实现自动化办公的目标。


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

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