Python 批量拆分 Excel 表格:按指定列内容分组到新文件

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

功能:

  • 读取 Excel 文件,并获取所有工作表。* 冻结第一个工作表的窗格 A1 列。* 从第二列开始,找到名称为 '表头' 的列,作为拆分依据。* 将 '表头' 列中所有相同内容的行,连带格式一起复制到新的工作表中。* 将原始工作表窗格 A1 的内容复制到每个新的工作表中。* 将每个新的工作表保存为独立的 Excel 文件,文件名为原工作表名。* 保存所有新生成的 Excel 文件到桌面文件夹。

**代码:**pythonimport openpyxlimport os

获取桌面路径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 = {} for col in range(2, ws.max_column+1): if ws.cell(row=1, column=col).value == '表头': for row in range(2, ws.max_row+1): value = ws.cell(row=row, column=col).value if value not in header: header[value] = [row] else: header[value].append(row) # 创建新的工作簿 new_wb = openpyxl.Workbook() new_ws = new_wb.active # 复制窗格A1的内容 new_ws['A1'] = ws['A1'].value # 复制表头列中所有相同内容的行 for col, rows in header.items(): for row in rows: for c in range(1, ws.max_column+1): new_ws.cell(row=row, column=c, value=ws.cell(row=row, column=c).value) # 保存新的工作簿到桌面 new_wb.save(os.path.join(desktop_path, f'{sheet_name}.xlsx'))

使用方法:

  1. 确保已经安装 openpyxl 库: bash pip install openpyxl 2. 将代码保存为 .py 文件,例如 split_excel.py。3. 将需要拆分的 Excel 文件(例如 example.xlsx)放到与代码文件相同的目录下。4. 运行代码: bash python split_excel.py 5. 拆分后的 Excel 文件将保存在桌面文件夹中。

注意:

  • 代码中假设 '表头' 列是第二列,如果实际情况不同,需要修改代码中相应的列索引。* 可以根据需要修改代码,例如自定义输出路径、修改文件名等。
Python 批量拆分 Excel 表格:按指定列内容分组到新文件

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

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