Python Openpyxl 拆分表格:按表头列分类生成独立 Excel 文件
使用 Python Openpyxl 拆分表格并按表头列分类生成独立 Excel 文件
本教程将演示如何使用 Python Openpyxl 库拆分表格,将相同表头列内容的行带原格式生成独立的 Excel 文件,并保存到桌面新建文件夹中。
代码:
import openpyxl
import os
from openpyxl.styles import PatternFill, Border, Side, Alignment, Protection, Font
# 创建文件夹
def create_folder(path):
folder = os.path.exists(path)
if not folder:
os.makedirs(path)
# 写入新的工作表
def write_new_sheet(wb, data, sheet_name):
# 创建新的工作表
new_sheet = wb.create_sheet(title=sheet_name)
# 写入窗格A1的内容
new_sheet['A1'] = wb.active['A1'].value
# 冻结窗格A1
new_sheet.freeze_panes = 'A2'
# 写入表头
for i in range(len(data[0])):
new_sheet.cell(row=2, column=i+1, value=data[0][i].value)
new_sheet.cell(row=2, column=i+1).font = Font(bold=True)
# 写入数据
for i in range(1, len(data)):
for j in range(len(data[i])):
new_sheet.cell(row=i+2, column=j+1, value=data[i][j].value)
new_sheet.cell(row=i+2, column=j+1).border = data[i][j].border
new_sheet.cell(row=i+2, column=j+1).fill = data[i][j].fill
new_sheet.cell(row=i+2, column=j+1).font = data[i][j].font
new_sheet.cell(row=i+2, column=j+1).number_format = data[i][j].number_format
new_sheet.cell(row=i+2, column=j+1).protection = data[i][j].protection
new_sheet.cell(row=i+2, column=j+1).alignment = data[i][j].alignment
# 拆分表格
def split_workbook(file_path):
# 打开工作簿
wb = openpyxl.load_workbook(file_path)
# 获取第一个工作表
sheet = wb.active
# 冻结窗格A1
sheet.freeze_panes = 'A2'
# 获取表头列
header = {}
for col in sheet.iter_cols(min_row=2, max_row=2):
for cell in col:
header[cell.value] = cell.column_letter
# 遍历表格数据,生成新的工作表
for row in sheet.iter_rows(min_row=3):
data = []
for cell in row:
data.append(cell)
# 获取表头列的值
col_value = data[int(header['表头列']) - 1].value
# 创建新的工作簿
new_wb = openpyxl.Workbook()
# 写入新的工作表
write_new_sheet(new_wb, sheet.iter_rows(), sheet_name=col_value)
# 保存新的工作簿
create_folder(os.path.join(os.path.expanduser('~'), 'Desktop', 'Split_Workbook'))
new_wb.save(os.path.join(os.path.expanduser('~'), 'Desktop', 'Split_Workbook', f'{col_value}.xlsx'))
if __name__ == '__main__':
split_workbook('test.xlsx')
代码解释:
-
create_folder(path)函数:- 创建名为 'Split_Workbook' 的文件夹,并将它保存在桌面。
-
write_new_sheet(wb, data, sheet_name)函数:- 创建一个新的工作表,命名为
sheet_name。 - 将原工作表中的 A1 内容复制到新工作表 A1。
- 冻结新工作表 A1 行。
- 写入表头和数据,并保留原始格式。
- 创建一个新的工作表,命名为
-
split_workbook(file_path)函数:- 打开指定的 Excel 文件
file_path。 - 获取第一个工作表。
- 冻结窗格 A1 行。
- 从第二行获取表头列,将表头列的值存入字典
header中,key 为表头列值,value 为列字母。 - 遍历表格数据,从第三行开始,获取表头列值,并使用该值作为新工作表名称。
- 创建新的工作簿,并调用
write_new_sheet函数写入数据,并将新的工作簿保存到桌面新建的文件夹中。
- 打开指定的 Excel 文件
使用说明:
- 将以上代码保存为 Python 文件(例如
split_excel.py)。 - 将需要拆分的 Excel 文件命名为
test.xlsx并放在与 Python 文件相同的目录下。 - 运行 Python 文件:
python split_excel.py - 拆分后的 Excel 文件将保存在桌面新建的
Split_Workbook文件夹中,每个文件以表头列值命名。
注意:
- 代码中的
表头列是表头列名称,需要根据实际情况修改。 - 该代码仅适用于单工作表 Excel 文件。
- 可以根据需要修改代码,以满足其他需求。
希望本教程能帮助你使用 Python Openpyxl 库高效地拆分表格!
原文地址: https://www.cveoy.top/t/topic/fW7H 著作权归作者所有。请勿转载和采集!