使用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()

代码解读:

  1. 导入必要的库: openpyxl 用于操作Excel文件,os 用于文件和目录操作,shutil 用于删除目录。
  2. 设置工作目录和文件名: 指定要处理的Excel文件路径和文件名。
  3. 打开Excel文件: 使用 openpyxl.load_workbook() 函数打开Excel文件。
  4. 获取第一个工作表: 通过 wb.worksheets[0] 获取第一个工作表。
  5. 冻结窗格A1行: 使用 ws.freeze_panes = 'A2' 冻结第一行,方便查看数据。
  6. 获取表头行: 获取第二行数据作为表头,并剔除空单元格。
  7. 创建保存新工作表的文件夹: 在桌面创建名为 'split_excel' 的文件夹,用于存放拆分后的Excel文件。
  8. 遍历表头: 遍历表头行的每个单元格,获取列名。
  9. 创建新工作表: 为每个列名创建一个新的Excel工作簿和工作表。
  10. 写入A1单元格内容: 将原始表格A1单元格的内容复制到新表格的A1单元格。
  11. 查找并复制数据: 遍历原始表格每一行数据,根据列名匹配,将符合条件的行复制到对应的新表格,并保留原始格式。
  12. 保存新工作表: 将新工作表保存到指定的文件夹,文件名以列名命名。
  13. 关闭Excel文件: 使用 wb.close() 关闭Excel文件。

总结

本文介绍了如何使用Python3.8的openpyxl库拆分Excel表格,并通过详细的代码示例讲解了每一步操作。你可以根据自己的需求修改代码,实现更复杂的数据处理任务。

Python3.8 Openpyxl库拆分表格实战:按列值分组并保留格式

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

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