Python Openpyxl 拆分表格:按列提取数据并生成独立 Excel 文件
以下代码使用 Python 3.8 版本的 openpyxl 库,实现了将一个 Excel 表格根据第一行表头信息拆分到多个 Excel 文件的功能。每个新的 Excel 文件包含对应表头列的所有数据,并保留了原始格式和 A1 格的内容。
import os
import openpyxl
from openpyxl.styles import colors, Font, Alignment
from openpyxl.utils import get_column_letter
# 设置工作目录和文件名
os.chdir('/Users/username/Desktop')
filename = 'example.xlsx'
# 打开工作簿并获取第一个工作表
wb = openpyxl.load_workbook(filename)
sheet = wb.active
# 冻结窗格 A1
sheet.freeze_panes = 'A2'
# 获取表头列名
header = []
for col in range(1, sheet.max_column + 1):
if sheet.cell(row=1, column=col).value:
header.append(sheet.cell(row=1, column=col).value)
# 根据表头列名拆分工作表
for col_name in header:
new_wb = openpyxl.Workbook()
new_sheet = new_wb.active
# 复制窗格 A1 的内容到新工作表
new_sheet['A1'] = sheet['A1'].value
new_sheet['A1'].font = Font(bold=True)
new_sheet['A1'].alignment = Alignment(horizontal='center')
new_sheet.freeze_panes = 'A2'
# 复制表头到新工作表
for col in range(1, sheet.max_column + 1):
if sheet.cell(row=1, column=col).value == col_name:
for row in range(1, sheet.max_row + 1):
new_sheet.cell(row=row, column=col).value = sheet.cell(row=row, column=col).value
new_sheet.cell(row=row, column=col).font = sheet.cell(row=row, column=col).font
new_sheet.cell(row=row, column=col).alignment = sheet.cell(row=row, column=col).alignment
# 保存新工作表为单独的 excel 文件
new_filename = f'{col_name}.xlsx'
new_wb.save(new_filename)
# 将新文件移动到新建的文件夹中
if not os.path.exists('split_excel'):
os.mkdir('split_excel')
os.rename(new_filename, f'split_excel/{new_filename}')
# 关闭工作簿
wb.close()
代码首先设置工作目录和文件名,然后打开工作簿并获取第一个工作表。接着,通过设置freeze_panes属性冻结窗格 A1 行的内容,并获取表头列名。然后,根据表头列名拆分工作表,将每个表头列中所有相同内容的行带原格式生成一个新的工作表,并带原格式把窗格 A1 的内容写入到每一个新的工作表。最后,将新的工作表生成单独的 excel 文件并以获取到的列中的单元格内容命名,新建一个文件夹保存到桌面中。
原文地址: https://www.cveoy.top/t/topic/fW8s 著作权归作者所有。请勿转载和采集!