Python3.8 Openpyxl库拆分表格实战:按列值分组并保留格式
使用Python3.8 Openpyxl库高效拆分Excel表格
在数据处理过程中,我们经常需要根据特定条件拆分Excel表格。本文将介绍如何利用Python3.8的openpyxl库,将一个Excel表格按照指定列的内容拆分成多个新的表格,并保留原始格式。
代码示例:
import openpyxl
import os
from shutil import rmtree
# 设置工作目录和文件名
work_dir = os.path.expanduser('~') + '/Desktop/'
file_name = 'example.xlsx'
# 打开Excel文件
wb = openpyxl.load_workbook(work_dir + file_name)
# 获取第一个工作表
ws = wb.worksheets[0]
# 冻结窗格A1行
ws.freeze_panes = 'A2'
# 获取表头行的单元格
header_cells = [cell for cell in ws[2] if cell.value is not None]
# 创建保存新工作表的文件夹
if os.path.exists(work_dir + 'split_excel'):
rmtree(work_dir + 'split_excel')
os.mkdir(work_dir + 'split_excel')
# 遍历表头行的单元格
for cell in header_cells:
# 获取列名
col_name = cell.value
# 创建新工作表
new_wb = openpyxl.Workbook()
new_ws = new_wb.active
# 写入窗格A1的内容
new_ws['A1'] = ws['A1'].value
# 遍历每一行,找到相同内容的行并复制
for row in ws.iter_rows(min_row=3):
if row[cell.column - 1].value == col_name:
new_row = []
for cell in row:
new_row.append(cell.value)
new_cell = new_ws.cell(row=len(new_ws['A'])+1, column=cell.column, value=cell.value)
new_cell._style = cell._style
new_ws.append(new_row)
# 保存新工作表
new_wb.save(work_dir + 'split_excel/' + col_name + '.xlsx')
# 关闭Excel文件
wb.close()
代码解读:
- 导入必要的库:
openpyxl用于操作Excel文件,os用于文件和目录操作,shutil用于删除目录。 - 设置工作目录和文件名: 指定要处理的Excel文件路径和文件名。
- 打开Excel文件: 使用
openpyxl.load_workbook()函数打开Excel文件。 - 获取第一个工作表: 通过
wb.worksheets[0]获取第一个工作表。 - 冻结窗格A1行: 使用
ws.freeze_panes = 'A2'冻结第一行,方便查看数据。 - 获取表头行: 获取第二行数据作为表头,并剔除空单元格。
- 创建保存新工作表的文件夹: 在桌面创建名为 'split_excel' 的文件夹,用于存放拆分后的Excel文件。
- 遍历表头: 遍历表头行的每个单元格,获取列名。
- 创建新工作表: 为每个列名创建一个新的Excel工作簿和工作表。
- 写入A1单元格内容: 将原始表格A1单元格的内容复制到新表格的A1单元格。
- 查找并复制数据: 遍历原始表格每一行数据,根据列名匹配,将符合条件的行复制到对应的新表格,并保留原始格式。
- 保存新工作表: 将新工作表保存到指定的文件夹,文件名以列名命名。
- 关闭Excel文件: 使用
wb.close()关闭Excel文件。
总结
本文介绍了如何使用Python3.8的openpyxl库拆分Excel表格,并通过详细的代码示例讲解了每一步操作。你可以根据自己的需求修改代码,实现更复杂的数据处理任务。
原文地址: https://www.cveoy.top/t/topic/fW8Q 著作权归作者所有。请勿转载和采集!