Python自动化拆分表格:按列内容生成新的Excel文件
使用Python自动化拆分Excel表格
本文将介绍如何使用Python 3.8和openpyxl库,根据指定列的内容将Excel表格拆分为多个新的Excel文件,并保留原始格式。
功能需求
- 获取第一个工作表并冻结第一行。
- 获取指定列(例如A列)作为表头列,并读取表头内容。
- 遍历表格,根据表头列的内容将数据行分组。
- 为每个分组创建一个新的工作表,并将分组数据复制到新工作表。
- 将每个新工作表保存为独立的Excel文件,文件名以表头内容命名。
- 将所有新生成的Excel文件保存在桌面上的指定文件夹中。
Python代码实现
import openpyxl
import os
from openpyxl.utils import get_column_letter
# 获取桌面路径
desktop_path = os.path.join(os.path.expanduser('~'), 'Desktop')
# 创建文件夹
folder_name = 'split_excel'
folder_path = os.path.join(desktop_path, folder_name)
if not os.path.exists(folder_path):
os.mkdir(folder_path)
# 打开Excel文件
file_path = 'example.xlsx'
wb = openpyxl.load_workbook(file_path)
# 获取第一个工作表
ws1 = wb.worksheets[0]
# 冻结窗格
ws1.freeze_panes = 'A2'
# 获取表头列
header_col = 'A'
header_row = 2
header_values = set()
while ws1[header_col + str(header_row)].value:
header_value = ws1[header_col + str(header_row)].value
header_values.add(header_value)
header_row += 1
# 遍历表格,拆分工作表
for header_value in header_values:
# 创建新的工作表
ws_new = wb.create_sheet(title=header_value)
# 写入第一行内容
ws_new['A1'] = ws1['A1'].value
# 写入表头
header_row = 2
for col in range(1, ws1.max_column + 1):
col_letter = get_column_letter(col)
if ws1[col_letter + str(header_row)].value == header_value:
for row in range(1, ws1.max_row + 1):
ws_new[col_letter + str(row)] = ws1[col_letter + str(row)].value
ws_new[col_letter + str(row)].font = ws1[col_letter + str(row)].font
ws_new[col_letter + str(row)].fill = ws1[col_letter + str(row)].fill
ws_new[col_letter + str(row)].border = ws1[col_letter + str(row)].border
ws_new[col_letter + str(row)].alignment = ws1[col_letter + str(row)].alignment
# 保存新的工作表为单独的Excel文件
file_name = header_value + '.xlsx'
file_path = os.path.join(folder_path, file_name)
wb_new = openpyxl.Workbook()
wb_new.remove(wb_new.active)
wb_new.add_sheet(ws_new)
wb_new.save(file_path)
# 关闭Excel文件
wb.close()
代码说明
- 导入必要的库:
openpyxl用于操作Excel文件,os用于处理文件和目录。 - 获取桌面路径和创建目标文件夹。
- 打开Excel文件并获取第一个工作表。
- 冻结第一行,方便查看数据。
- 获取表头列和表头内容。
- 遍历表格,根据表头列内容将数据行分组。
- 为每个分组创建新的工作表,并将分组数据复制到新工作表,包括格式信息。
- 将每个新工作表保存为独立的Excel文件,文件名以表头内容命名。
- 关闭Excel文件。
通过以上步骤,您可以使用Python轻松地根据指定列的内容将Excel表格拆分为多个新的Excel文件,并保留原始格式。
原文地址: https://www.cveoy.top/t/topic/fW7q 著作权归作者所有。请勿转载和采集!