利用python30以上的版本将excel表格拆分成若干个新表首先冻结窗格A1筛选第二行并找到姓名这一列按照姓名把所有形同姓名的行内容生成新的表格生成的新表格按照筛选的姓名命名并带有原表中冻结的窗格
A1。
以下是代码实现:
import openpyxl
# 打开excel文件
wb = openpyxl.load_workbook('example.xlsx')
# 获取第一个工作表
ws = wb.active
# 冻结窗格A1
ws.freeze_panes = 'B2'
# 获取所有行
rows = list(ws.rows)
# 获取表头
header = [cell.value for cell in rows[0]]
# 查找姓名所在列
name_col = None
for idx, val in enumerate(header):
if val == '姓名':
name_col = idx
break
# 如果找到了姓名列
if name_col is not None:
# 创建一个字典,用于存储姓名相同的行
name_dict = {}
for row in rows[1:]:
# 获取姓名单元格的值
name = row[name_col].value
# 如果该姓名还没有出现过,则创建一个新的sheet
if name not in name_dict:
name_dict[name] = wb.create_sheet(name)
# 将表头复制到新的sheet中
for i, val in enumerate(header):
name_dict[name].cell(row=1, column=i+1, value=val)
# 将该行内容复制到对应姓名的sheet中
new_row = [cell.value for cell in row]
for i, val in enumerate(new_row):
name_dict[name].cell(row=len(name_dict[name]['A'])+1, column=i+1, value=val)
# 保存excel文件
wb.save('new_example.xlsx')
以上代码会将原表中所有姓名相同的行拆分成新的表格,并以姓名作为新表格的名称,保存为新的excel文件。新表格中会包含原表的表头,以及所有对应姓名的行内容。新的excel文件中会包含原表中冻结的窗格A1
原文地址: http://www.cveoy.top/t/topic/goNw 著作权归作者所有。请勿转载和采集!