场景概述
这个标题可能过于笼统,只因个人不知如何具体陈述。想要表达的内容如下:
原数据data.xlsx中Sheet1工作表数据:
需将原数据转换成下图效果,并保存到data.xlsx文件的Sheet3工作表中:
工具准备
openpyxl模块
代码实现
from openpyxl import load_workbook
# 需要处理的文件
file = r'C:/Users/Administrator/Desktop/test/data.xlsx'
wb = load_workbook(file)
# 激活工作表'Sheet1'
ws = wb['Sheet1']
# 创建工作表
ws_res = wb.create_sheet('Sheet3')
# 创建表头
ws_res['A1'] = '班级'
ws_res['B1'] = '姓名'
# 获取数据范围,即数据最大的行数和列数
max_r = ws.max_row
max_c = ws.max_column
w_r = 1
c_max = 1
for r in range(2, max_r+1):
for c in range(1, max_c+1):
if ws.cell(r, c+1).value is not None: # 判断该行数据的最后一列
print('%s %s' % (ws.cell(r, 1).value, ws.cell(r, c + 1).value))
ws_res['A' + str(w_r + 1)] = ws.cell(r, 1).value
ws_res['B' + str(w_r + 1)] = ws.cell(r, c + 1).value
c_max = c_max + 1
w_r = w_r + 1
w_r = c_max
# 保存数据
wb.save(file)
执行代码后打开原data.xlsx,这里多了Sheet3工作表,且达到了我们预期的数据呈现效果!
下节,我们将介绍如何把刚才的需求反向输出,即本节实现的呈现效果,转换为本节原呈现方式!!!