Python Openpyxl教程:拆分Excel表格数据到不同sheet
使用Python Openpyxl拆分Excel表格数据
本教程将演示如何使用Python的Openpyxl库,将一个Excel表格的数据按照指定列的内容拆分到不同的工作表中。
功能需求
假设我们有一个Excel表格,包含员工信息,我们希望根据'部门'列,将不同部门的员工信息拆分到不同的工作表中。
实现步骤
-
导入openpyxl库:
import openpyxl -
打开Excel文件并获取目标工作表:
# 打开Excel文件 wb = openpyxl.load_workbook('员工信息.xlsx') # 获取第一个工作表 sheet = wb.worksheets[0] -
冻结首行:
# 冻结第一行,方便查看标题 sheet.freeze_panes = 'A2' -
提取表头信息:
# 获取第二行所有单元格的值作为表头 header_row = [cell.value for cell in sheet[2]] -
提取拆分依据列的数据:
# 获取'部门'列所有单元格的值,从第二行开始 department_column = [cell.value for cell in sheet['A']][1:] -
创建新的工作表并写入数据:
# 获取不重复的部门名称 unique_departments = set(department_column) # 遍历每个部门 for department in unique_departments: # 创建新的工作表,命名格式为'部门名称 (人数)' new_sheet_name = f'{department} ({department_column.count(department)} 人)' new_sheet = wb.create_sheet(title=new_sheet_name) # 写入表头 new_sheet.append(header_row) # 遍历每一行数据 for row_num, cell_value in enumerate(department_column): # 如果该行属于当前部门 if cell_value == department: # 将该行数据写入新的工作表 new_sheet.append([cell.value for cell in sheet[row_num + 2]]) # 删除新工作表中的空行 for row in new_sheet.iter_rows(): if all([cell.value is None for cell in row]): new_sheet.delete_rows(row[0].row) -
保存修改后的Excel文件:
# 保存Excel文件 wb.save('员工信息_拆分.xlsx')
总结
通过以上步骤,我们成功地使用Python Openpyxl库实现了Excel表格数据的拆分。这只是一个简单的示例,您可以根据实际需求修改代码,例如更改拆分依据列、调整新工作表命名格式等。
原文地址: https://www.cveoy.top/t/topic/laCx 著作权归作者所有。请勿转载和采集!