Python Openpyxl Excel表格拆分:按列内容分组并保留格式
使用Python Openpyxl 拆分 Excel 表格,按列内容分组并保留格式
本文介绍如何使用 Python 的 Openpyxl 库,将一个 Excel 表格按照指定列的内容进行拆分,并将每个分组的数据保存到新的 Excel 文件中。
功能亮点:
- 根据指定名称的列进行分组* 保留原始表格的格式* 将每个分组数据保存到单独的 Excel 文件
**代码示例:**pythonimport osimport openpyxl
获取桌面路径desktop_path = os.path.join(os.path.expanduser('~'), 'Desktop')
创建一个文件夹用于存放拆分后的excel文件folder_name = '拆分后的excel文件'folder_path = os.path.join(desktop_path, folder_name)if not os.path.exists(folder_path): os.mkdir(folder_path)
打开要拆分的excel文件file_name = '要拆分的excel文件.xlsx'file_path = os.path.join(desktop_path, file_name)wb = openpyxl.load_workbook(file_path)
获取第一个工作表ws1 = wb.worksheets[0]
冻结第一个工作表窗格A1行的内容ws1.freeze_panes = 'A2'
从第二行开始获取名称为'表头'的列header_col = Nonefor col in ws1.iter_cols(min_row=2, max_row=2): for cell in col: if cell.value == '表头': header_col = col[0].column_letter break if header_col: break
if not header_col: print('未找到名称为表头的列!')else: # 遍历表头列中的每个单元格,生成新的工作表并写入数据 for cell in ws1[header_col][1:]: value = cell.value if value: # 创建新的工作表 ws_new = wb.create_sheet(title=value)
# 写入窗格A1的内容 ws_new['A1'].value = ws1['A1'].value ws_new['A1'].font = ws1['A1'].font ws_new['A1'].alignment = ws1['A1'].alignment ws_new['A1'].border = ws1['A1'].border ws_new['A1'].fill = ws1['A1'].fill
# 遍历表头列中相同内容的行,写入数据并复制格式 for row in ws1.iter_rows(min_row=3): if row[header_col].value == value: ws_new.append([cell.value for cell in row]) for cell in row: ws_new[cell.coordinate].font = cell.font ws_new[cell.coordinate].alignment = cell.alignment ws_new[cell.coordinate].border = cell.border ws_new[cell.coordinate].fill = cell.fill
# 保存新的工作表到单独的excel文件中 file_name_new = f'{value}.xlsx' file_path_new = os.path.join(folder_path, file_name_new) wb_new = openpyxl.Workbook() wb_new.active = ws_new wb_new.save(file_path_new)
关闭excel文件wb.close()
使用方法:
- 将代码保存为
.py文件,例如excel_split.py。2. 将需要拆分的 Excel 文件命名为要拆分的excel文件.xlsx,并放置在与代码文件相同的目录下。3. 运行代码,拆分后的文件会保存在桌面新建的拆分后的excel文件文件夹中。
代码说明:
- 代码首先获取桌面路径,并创建一个名为“拆分后的excel文件”的文件夹,用于存放拆分后的文件。* 然后,代码打开名为“要拆分的excel文件.xlsx”的 Excel 文件,并获取第一个工作表。* 代码冻结第一个工作表窗格 A1 行的内容,方便查看数据。* 接着,代码从第二行开始遍历表格,查找名为“表头”的列。* 找到“表头”列后,代码遍历该列的所有单元格,根据单元格的值创建新的工作表。* 对于每个新的工作表,代码将原始工作表 A1 单元格的内容和格式复制到新工作表的 A1 单元格中。* 然后,代码遍历原始工作表的所有行,将与当前单元格值相同的行数据复制到新工作表中,并保留原始格式。* 最后,代码将每个新的工作表保存为单独的 Excel 文件,文件名为单元格的值,并关闭所有打开的 Excel 文件。
注意:
- 代码中
'表头'指的是需要进行拆分的列名,请根据实际情况修改。* 确保已安装 Openpyxl 库。可以使用pip install openpyxl命令进行安装。
希望本文能帮助您使用 Python Openpyxl 库轻松拆分 Excel 表格!
原文地址: https://www.cveoy.top/t/topic/fW7w 著作权归作者所有。请勿转载和采集!