场景概述
这个标题可能过于笼统,只因个人不知如何具体陈述。想要表达的内容如下:
原数据data.xlsx中Sheet3工作表数据:
1595172980(1).png
需将原数据转换成下图效果,并保存到data.xlsx文件的Sheet2工作表中:
1595172640(1).jpg
需求准备
先在data.xlsx文件中创建工作表Sheet2,否则会报错!!!
工具准备
openpyxl模块
代码实现
from openpyxl import load_workbook
# 需要处理的文件
file = r'C:/Users/Administrator/Desktop/test/data.xlsx'
wb = load_workbook(file)
# 激活工作表'Sheet1'
ws = wb['Sheet3']
# 获取数据范围,即数据最大的行数和列数
max_r = ws.max_row
max_c = ws.max_column
# 创建工作表
ws_res = wb['Sheet2']
r_num = 2
c_num = 1
for r in range(2, max_r + 1):
# for c in range(1, max_c + 1):
if ws.cell(r, 1).value == ws.cell(r + 1, 1).value:
ws_res.cell(row=c_num + 1, column=1, value=ws.cell(r, 1).value)
ws_res.cell(row=c_num + 1, column=r_num, value=ws.cell(r, 2).value)
r_num = r_num + 1
else:
ws_res.cell(row=c_num + 1, column=r_num, value=ws.cell(r, 2).value)
c_num = c_num + 1
r_num = 2
continue
# 保存数据
wb.save(file)
'''根据处理后的数据范围创建表头'''
# 激活工作表'Sheet2'
ws2 = wb['Sheet2']
# 获取数据范围,即数据最大的行数和列数
max_c = ws2.max_column
for i in range(1, max_c):
ws2.cell(row=1, column=1, value='班级')
ws2.cell(row=1, column=i+1, value='学生 %s' % i)
# 保存数据
wb.save(file)
执行代码,完成预期效果!
1595185018(1).png
下节,将介绍同一维度输出至一个单元格,只是用符号分隔开!!!
网友评论